我有一个多模块maven项目:模块A依赖于模块B.当模块B建立时,它命名为ModuleB.jar并复制到目标目录。现在,在模块A的POM我必须把maven多模块依赖版本
<dependency>
<groupid>com.mycompany.app</groupid>
<artificatId>ModuleB</artifactId>
<version>1.0</version>
</dependency>
我必须把版本号,但那么现在我有两个相同的模块B瓶:ModuleB.jar
(在名称中没有版本)和ModuleB-1.0.jar
在沿有ModuleA.jar目标目录。
我更喜欢从罐子的最后名称保持版本号了,因为我们还有其他遗留应用程序依赖于这些罐子
反正有添加模块B作为没有版本号的模块A的POM的依赖?任何干净的解决方案,或者我只是让自己生活困难?
编辑: 澄清:这些模块是从父pom作为jar包构建的,并且将它们及其依赖关系复制到项目父目录之外的目标目录。因此,有两个ModuleB JAR的原因:一个是当模块B被编译和打包时,最终名称被设置为ModuleB.jar,另一个是当模块A与其依赖关系一起被编译和打包,其中包括模块B但名称为ModuleB- 1.0.jar
谢谢!
复制的依赖执行(我可以带出副本中的版本,但我会失去对第三方jar文件的版本,如春瓶= /):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${build.dir}/lib</outputDirectory>
<overWriteIfNewer>true</overWriteIfNewer>
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
作为一个起点,如果它是一个多模块项目,所有模块都使用相同的版本构建,那么您应该能够指定$ {project.version},而不必一直更新。我不认为这会解决你的实际问题。这两个moduleB jar是否相同(如同样的校验和所有内容)只是名称不同? –
@GerardRyan是的ModuleB罐子是完全相同的只是不同的名称。看看我编辑的编辑,它会解释发生了什么 –
你可以包括你用来复制依赖关系的父pom xml吗?我认为解决方案可能会从依赖副本中排除模块B. –