我有一个包含以下 pom.xml 的项目,我从中删除了一些不需要的东西。我打算发生的是生成一个jar文件并最终生成一个war
包,其中包含jar
文件作为库。不幸的是,以下pom.xml
似乎没有发生这种情况。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>test</artifactId>
<groupId>com.test.abcd</groupId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Test Application</name>
....
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>target/www/</warSourceDirectory>
</configuration>
<executions>
<execution>
<id>build-war-in-classes</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</project>
即使在程序包阶段生成jar
和war
,war
也不会包含jar
文件(WEB-INF/lib/test-0.0.1-SNAPSHOT.jar
)一个图书馆,而不是我看到以下课程,
META-INF/
META-INF/MANIFEST.MF
....
WEB-INF/
WEB-INF/classes/
....
可能导致此行为的原因是什么?
答案 0 :(得分:1)
我认为您在war插件配置中缺少conf标志:
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
来自https://maven.apache.org/plugins/maven-war-plugin/faq.html
如何在我的webapp中创建包含类的JAR?
如果您只想将类和资源打包为WEB-INF / lib中的JAR而不是WEB-INF / classes下的松散文件, 使用以下配置:
<plugin> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <configuration> <archiveClasses>true</archiveClasses> </configuration> </plugin>