我有两个Maven项目A和B,其中A在编译时取决于B,但是在运行时B需要一些类别的A。
我所做的是:
a的pom.xml
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>${B.version}</version>
</dependency>
b的pom.xml
<dependency>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>${A.version}</version>
<scope>runtime</scope>
</dependency>
让詹金斯(Jenkins(编译项目时,它无法互相编译为下游项目,因为它找到了循环依赖性并避免了无限的构建循环。
因此,我认为仅在包装B(Jenkins执行mvn package
(时仅添加A的运行时依赖关系的一种方法,以便Jenkins在pom.xml
文件中找不到圆形依赖项并配置下游汇编。
有什么方法可以使用现有的Maven插件或其他方法来完成此操作?
谢谢
我出于相同的原因写了此Maven插件。
它将所有列出的jar伪像添加到使用此插件的战争文件中。解决了JAR依赖项,并将其添加到战争文件中,如果没有找到同一版本的伪像。
重要的是仅在<dependency>
POM部分内定义依赖项,因为这是Maven反应器使用的唯一配置。
如果您使用自定义插件来介绍自己的依赖性管理想法,则很可能会破坏反应堆。即使您的自定义方法可与常规mvn clean install
一起使用,它通常会在使用-T4
或类似选项启用多螺纹构建时爆炸。根本无法按照反应堆管辖的POM明确定义模块构建顺序。
模块之间共享代码的通常方法是创建一个新的模块C
,该模块均依赖于A
和B
。