我有一个maven web项目,包装为“战争”。该包生成war文件,确认为war格式。但是,我喜欢将项目打包为“jar”以及默认的“war”格式。所以,我正在尝试使用“maven jar”插件来实现这一目标。我正在使用以下jar插件配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<includes>
<include>../../src/main/webapp/**</include>
<include>**/*</include>
</includes>
</configuration>
</plugin>
“package”命令生成一个jar文件,其中包含“resources”文件夹的类和内容,war文件会生成一个正确的“war”文件。
但是'src / main / webapp'的内容不包含在jar文件中。 如何使用jar插件在jar中包含src / main / webapp的内容?
答案 0 :(得分:2)
使用Maven做到这一点的唯一干净方法是将项目分成两个项目,一个用于构建jar,一个用于构建战争。(更简单的标准项目比一个非标准项目更好,尤其是Maven )
现在 如果 您还希望共享src / main / webapp中的文件,您可以使用war覆盖(war as dependencies), 或者使用类似spring servletDispatcher及其mvc:resources标签的东西。
答案 1 :(得分:1)
通常Maven war:war提供2个重要参数,如下所示: -
1 archiveClasses
是否将为webapp中的类创建JAR文件。使用此可选配置参数将使已编译的类 归档到JAR文件,然后将从webapp 中排除classes目录。 默认值为:false。 用户属性:archiveClasses。
2 attachClasses
是否应将类(即WEB-INF / classes目录的内容)作为附加工件附加到项目中。默认情况下,附加工件的分类器是“类”。您可以使用
<classesClassifier>someclassifier</classesClassifier>
参数进行更改。
即使这是一个提供Maven War Plugin的功能,也不包括创建的jar文件的src/main/webapp
。然后你可以考虑Maven Asssembly Plugin
Maven的Assembly插件主要是为了允许用户将项目输出及其依赖项,模块,站点文档和其他文件聚合到一个可分发的归档中。目前,它可以使用以下格式创建发行版:
使用Assembly Descriptors,您可以Filtering Some Distribution Files和 Including and Excluding Artifacts等等。这意味着您可以使用任何所需的内容/资源创建自己的存档。
如果您想使用正如您所提到的Maven Jar Plugin。它还提供以下内容: -
usage page会为您提供更多信息。
我希望这可能有所帮助。