如何从Web项目创建战争和jar?

我有一个maven web项目,包装为“战争”。 该包生成war文件,确认为war格式。 但是,我喜欢将项目打包为“jar”以及默认的“war”格式。 所以,我正在尝试使用“maven jar”插件来实现这一目标。 我使用以下jar插件配置。

 org.apache.maven.plugins maven-jar-plugin   make-a-jar package  jar     ${project.build.outputDirectory}  ../../src/main/webapp/** **/*    

“package”命令生成一个jar文件,其中包含“resources”文件夹的类和内容,war文件生成一个正确的“war”文件。

但是’src / main / webapp’的内容不包含在jar文件中。 如何使用jar插件在jar中包含src / main / webapp的内容?

通常Maven战争:战争提供了2个重要参数如下: –

1个archiveClasses

是否将为webapp中的类创建JAR文件。 使用此可选配置参数将使已编译的类 存档到JAR文件中然后将从webapp中排除classes目录默认值为 :false。 用户属性是 :archiveClasses。

2个attachClasses

是否应将类(即WEB-INF / classes目录的内容)作为附加工件附加到项目中。 默认情况下,附加工件的分类器是“类”。 您可以使用someclassifier参数更改它。

即使这是一个提供Maven War Plugin的function ,这也不包括src/main/webapp到创建的jar文件。 然后你可以考虑Maven Asssembly插件

Maven的Assembly插件主要是为了允许用户将项目输出及其依赖项,模块,站点文档和其他文件聚合到一个可分发的归档中。 目前,它可以使用以下格式创建分发:

  1. 压缩
  2. 柏油
  3. tar.gz的
  4. TAR.BZ2
  5. jar
  6. DIR
  7. 战争
  8. 以及为其配置ArchiveManager的任何其他格式

通过使用程序集描述符 ,您可以过滤某些分发文件以及包括和排除工件等。 这意味着您可以使用任何所需的内容/资源创建自己的存档。

如果您想使用Maven Jar插件,就像您提到的那样。 它还提供以下内容: –

  1. 包含/排除jar工件中的内容
  2. 从项目中创建其他附加的jar工件
  3. 等等

使用页面将为您提供更多信息。

我希望这可能有所帮助。

使用Maven唯一干净的方法就是将项目拆分为两个项目,一个用于构建jar,一个用于构建战争。(更简单的标准项目比一个非标准项目更好,尤其是Maven)

现在如果你还想在src / main / webapp中共享文件,你可以使用war覆盖(war as dependencies),或者使用类似spring servletDispatcher及其mvc:resources标签的东西。