当EAR模块具有两个(或更多)具有相同artifactId的依赖项时,Maven将这些依赖项复制到/lib
目录中,一个重写另一个。{1}}目录。最后,EAR中只有一个图书馆。
<dependency>
<groupId>com.group1</groupId>
<artifactId>same-artifact</artifactId>
</dependency>
<dependency>
<groupId>com.group2</groupId>
<artifactId>same-artifact</artifactId>
</dependency>
是否有可能手动重命名依赖项(别名?)或使用全名(com.group1.same-artifact.jar
而不是same-artifact.jar
)复制JAR?
编辑: 它只是关于传递依赖的,最终的EAR 应该看起来像这样:
/lib
/com.group1.same-artifact.jar
/com.group2.same-artifact.jar
/myModule.ejb
答案 0 :(得分:0)
此问题有两种解决方案。一种是改变fileNameMapping via配置,如下所示:
<project>
[...]
<build>
[...]
<pluginManagement>
<plugins>
[...]
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<fileNameMapping>full</fileNameMapping>
</configuration>
</plugin>
[...]
</project>
将为所有这些工件使用groupId+artifactId+version
个工件。
或者您只能对artifacts where a clash exsits这样的人进行此更改:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
[...]
<modules>
<ejbModule>
<groupId>artifactGroupId</groupId>
<artifactId>artifactId</artifactId>
<bundleFileName>anotherName-1.2.3.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>