我有一个多模块项目。每个模块都内置在 .jar 文件中,其名称对应于 .jar 文件${project.artifactId}
。一个模块内置在 .war 文件中。这是我处理一些问题的地方。WEB-INF 文件夹包含 lib 文件夹,其中包含来自其他模块的一些结果 .jar。这些罐子的名称如下:project.artifactId+project.version.jar
,当我需要时project.artifactId.jar
。
我试过配置maven-war-plugin和maven-jar-plugin,结果还是一样。
以下是一些带有构建结果的 pom.xml 文件:
罐子模块
<groupId>com.mymodule.mysubmodule</groupId>
<artifactId>sub-module</artifactId>
<version>1.1-SNAPSHOT</version>
<build>
<finalName>${project.artifactId}</finalName>
...
结果:子模块.jar
战争模块
<groupId>com.mymodule.warmodule</groupId>
<artifactId>war-module</artifactId>
<version>1.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependency>
<groupId>com.mymodule.mysubmodule</groupId>
<artifactId>sub-module</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<build>
<finalName>ROOT</finalName>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>default-war</id>
<configuration>
<warSourceExcludes>**</warSourceExcludes>
<webXml>${project.build.directory}/${project.build.finalName}/WEB-INF/web.xml</webXml>
</configuration>
</execution>
</executions>
</plugin>
...
结果:/target/war-module.jar、ROOT/WEB-INF/lib/war-module-1.1-SNAPSHOT.jar、ROOT/WEB-INF/lib/sub-module-1.1-SNAPSHOT.jar
outputFileNameMapping
war-maven-plugin 不适合我,因为它会删除所有依赖项的版本,甚至不会从我的模块中删除。
如何在 WEB-INF/lib 文件夹中使用没有版本的特定 jar 构建 .war 文件?