Java Maven将依赖项从一个项目继承到另一个项目中

Java Maven将依赖项从一个项目继承到另一个项目中,java,maven,bamboo,Java,Maven,Bamboo,给定一个Maven项目,生成一个jar: <groupId>myprojects</groupId> <artifactId>A</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>some.ne

给定一个Maven项目,生成一个jar:

<groupId>myprojects</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
    <dependency>
        <groupId>some.needed.group</groupId>
        <artifactId>some.needed.artifact1</artifactId>
    </dependency>
    <dependency>
        <groupId>some.needed.group</groupId>
        <artifactId>some.needed.artifact2</artifactId>
    </dependency>
</dependencies>
myprojects
A.
1
罐子
某个团体
需要一些人工制品
某个团体
需要一些人工制品
项目B取决于a并生成企业档案:

<groupId>myprojects</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
<packaging>ear</packaging>
<dependencies>
    <dependency>
        <artifactId>A</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>
myprojects
B
1
耳朵
A.
1
我如何实现让项目B ear工件不仅包括项目B的jar工件,而且还包括它的依赖工件—一些.needed.artifact1和一些.needed.artifact2


我编辑并添加了这一点,因为似乎只有从Bambol运行mvn时才会出现这种行为:
奇怪的是,当我从Eclipse在本地运行mvn时,它就工作了,而当它由Bambol持续集成服务器运行时,它就不工作了。在本地运行时,我正确地生成了application.xml,引用了所有可传递的依赖项,并将相应的jar文件复制到lib文件夹。在Bamboo plan上,生成的application.xml不包含引用,jar文件不在lib文件夹中。

首先作为更正,我认为依赖关系应该在a上,而不是在B上,如下所示:

   <dependencies>
    <dependency>
        <artifactId>A</artifactId>
        <version>1.0</version>
    </dependency>
 </dependencies>

A.
1
关于拥有依赖JAR的原始问题,我认为它们应该在EAR文件中可用,因为您依赖于
项目
,而项目又依赖于
some.needed.artifact1和some.needed.artifact2
(可传递依赖项)由于您提供的作用域是默认值,因此maven将把它作为compile使用,并且所有JAR都将捆绑在您的ear文件中


感谢在产生ear的项目B中,您可以像这样包含对a的依赖项

<modules>
  <module>project A</module>
</modules>
<dependencies>
  <dependency>
    <groupId>some.needed.group</groupId>
    <artifactId>A</artifactId>
    <version>1.0</version>
  </dependency>
</dependencies>

项目A
某个团体
A.
1
在项目A中,将父项目定义为项目B,如下所示

<parent>
        <groupId>myprojects</groupId>
        <artifactId>B</artifactId>
        <version>1.0</version>
        <name>project B</name>
</parent>
<name>project A</name>

我的项目
B
1
项目B
项目A

它已经应该;依赖项是可传递的。事实上,我错误地键入了artifactId。我在我的文本中重新编辑并更正了它。奇怪的是,当我从Eclipse本地运行mvn时,它工作了,但当它由Bambol continuous integration server运行时,它就不工作了。在本地运行时,我正确生成了application.xml,并引用了所有可传递的依赖项,这些依赖项被复制到lib文件夹中。在Bamboo plan上,生成的application.xml不包括引用,并且数据库不在lib文件夹中。我会继续搜索的。嗯,对不起,竹子不在我的保护伞下。拉拉:(.你可以把你的问题贴在竹子下面,这样其他竹子专家就可以帮助你。感谢项目包装“pom”可以定义模块;项目a不能包含这样的引用,因为它包装的是“ear”。我猜你没有正确阅读我的回答。我的回答中没有任何地方说项目a包装的ear和你自己包装的一样ndicated project B打包ear。我在上面说过,将project B定义为project A pom中project A的父项目,并将project A作为project B pom中的一个模块,这样您可以在构建project BIn时直接打包project A jar文件。我之前的回答是project“B”。除reactor(pom打包)外,没有其他项目可以定义模块。这正是我所说的,项目B是你们的反应堆,你们在哪里定义项目A的模块,对吗?