Maven 项目构建到 jar 和 war
Maven project build into jar and war
我有一个包含以下 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/
....
什么可能导致此行为?
我认为您在 war 插件配置中缺少一个 conf 标志:
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
引自https://maven.apache.org/plugins/maven-war-plugin/faq.html
How do I create a JAR containing the classes in my webapp?
If you would simply like to package the classes and resources as a JAR in WEB-INF/lib rather than as loose files under WEB-INF/classes,
use the following configuration:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
</plugin>
我有一个包含以下 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/
....
什么可能导致此行为?
我认为您在 war 插件配置中缺少一个 conf 标志:
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
引自https://maven.apache.org/plugins/maven-war-plugin/faq.html
How do I create a JAR containing the classes in my webapp?
If you would simply like to package the classes and resources as a JAR in WEB-INF/lib rather than as loose files under WEB-INF/classes, use the following configuration:
<plugin> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <configuration> <archiveClasses>true</archiveClasses> </configuration> </plugin>