Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven在打包时包含运行时依赖项的方法_Java_Maven_Jenkins - Fatal编程技术网

Java Maven在打包时包含运行时依赖项的方法

Java Maven在打包时包含运行时依赖项的方法,java,maven,jenkins,Java,Maven,Jenkins,我有两个Maven项目,A和B,其中A在编译时依赖于B,但在运行时B需要一些A类 我所做的是: A的pom.xml <dependency> <groupId>B</groupId> <artifactId>B</artifactId> <version>${B.version}</version> </dependency> <dependency> <group

我有两个Maven项目,A和B,其中A在编译时依赖于B,但在运行时B需要一些A类

我所做的是:

A的pom.xml

<dependency>
  <groupId>B</groupId>
  <artifactId>B</artifactId>
  <version>${B.version}</version>
</dependency>
<dependency>
  <groupId>A</groupId>
  <artifactId>A</artifactId>
  <version>${A.version}</version>
  <scope>runtime</scope>
</dependency>

B
B
${B.version}
B的pom.xml

<dependency>
  <groupId>B</groupId>
  <artifactId>B</artifactId>
  <version>${B.version}</version>
</dependency>
<dependency>
  <groupId>A</groupId>
  <artifactId>A</artifactId>
  <version>${A.version}</version>
  <scope>runtime</scope>
</dependency>

A.
A.
${A.version}
运行时
当让Jenkins编译项目时,它无法将彼此编译为下游项目,因为它找到了循环依赖项并避免了无限构建循环

因此,我想的是一种只在打包B时(当Jenkins执行
mvn package
时)添加a的运行时依赖项的方法,这样Jenkins就不会在
pom.xml
文件中找到循环依赖项,并配置下游编译

是否有任何方法可以通过现有的Maven插件或其他方式实现这一点


谢谢

重要的是只在
POM部分中定义依赖项,因为这是应用程序使用的唯一配置

如果你摆弄自定义插件来引入你自己的依赖管理思想,你很可能会破坏反应器。即使您的自定义方法适用于常规的
mvn clean install
,但当使用
-T4
或类似选项启用多线程构建时,它通常会爆炸。在POM中没有明确定义模块构建顺序的方法,因为它是由反应器控制的


在模块之间共享代码的常用方法是创建一个新的模块
C
,该模块由
a
B
共同依赖

重要的是只在
POM部分中定义依赖项,因为这是应用程序使用的唯一配置

如果你摆弄自定义插件来引入你自己的依赖管理思想,你很可能会破坏反应器。即使您的自定义方法适用于常规的
mvn clean install
,但当使用
-T4
或类似选项启用多线程构建时,它通常会爆炸。在POM中没有明确定义模块构建顺序的方法,因为它是由反应器控制的

在模块之间共享代码的常用方法是创建一个新的模块
C
,该模块由
a
B
共同依赖

我也是出于同样的原因写的

它将任何列出的JAR工件添加到使用该插件的WAR文件中。如果没有找到具有相同版本的工件,JAR依赖项将被解析并添加到WAR文件中。

我也是出于同样的原因编写的


它将任何列出的JAR工件添加到使用该插件的WAR文件中。如果没有找到具有相同版本的工件,JAR依赖关系将被解析并添加到WAR文件中。

我认为将这些类从A移动到B不是一个选项,是吗?这将是最好的做法,因为循环依赖性不好,maven或notHI@MarioTrucco,不幸的是,在这种情况下这不是一个选项:/Try dependencies(
B
from
A
A
from
B
)并直接包括两者。
A在编译时依赖于B,但是在运行时B需要一些A类
,您可能找不到用Maven解决这个问题的“正确”方法(不过可能还有一个解决方法)。您的问题是由您的类设计引起的(A依赖于B,B依赖于A),正如建议的那样,您应该将这两个模块使用的类移动到一个C模块中,这两个模块都将依赖于该模块。我认为将这些类从A移动到B不是一个选项,是吗?这将是最好的做法,因为循环依赖性不好,maven或notHI@MarioTrucco,不幸的是,在这种情况下这不是一个选项:/Try dependencies(
B
from
A
A
from
B
)并直接包括两者。
A在编译时依赖于B,但是在运行时B需要一些A类
,您可能找不到用Maven解决这个问题的“正确”方法(不过可能还有一个解决方法)。您的问题是由您的类设计引起的(A依赖于B,B依赖于A),正如建议的那样,您应该将两个模块使用的类移动到一个C模块中,这两个模块都将依赖于该模块。