JavaMaven:一个项目如何能够从一个二级依赖引用一个类
我正在与Maven合作并创建自己的模块
我有一个01CentralDomain项目 使用简单的com。曼努埃尔。乔丹。域包含三个@实体的包 例如,产品
它的pom的一部分。xml是:
<modelVersion>4.0.0</modelVersion>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<packaging>jar</packaging>
<name>01CentralDomain</name>
<version>1.0.1</version>
<url>https://github.com/manueljordan/</url>
我有另一个02CentralDomain项目 再次使用相同的简单com。曼努埃尔。乔丹。域包含两个新@实体的包 其中一个是例如用户
考虑第一个项目
如何扩展它的pom的一部分。xml是:
<modelVersion>4.0.0</modelVersion>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<packaging>jar</packaging>
<name>02CentralDomain</name>
<version>1.0.2</version>
<url>https://github.com/manueljordan/</url>
...
<dependencies>
<dependency>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
因此,实际上我的第二个项目可以访问第一个项目,它将能够引用三个实体,如产品,我们可以假设我的域包现在总共有5个实体,第二个为3+2
现在我有第三个项目(02CentralExecution)
它的pom的一部分。xml是:
<modelVersion>4.0.0</modelVersion>
<groupId>com.manuel.jordan.centralexecution</groupId>
<artifactId>central-execution</artifactId>
<packaging>jar</packaging>
<name>02CentralExecution</name>
<version>1.0.2</version>
<url>https://github.com/manueljordan/</url>
...
<dependencies>
<dependency>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
理论上,第三个项目可以访问第二个项目的源代码,因此第一个项目的源代码也可以访问
它不工作,第三个项目只能访问第二个项目的源代码。 我可以使用用户类,但不能使用产品类
即使我两者都申报
<dependencies>
<dependency>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.manuel.jordan.centraldomain</groupId>
<artifactId>central-domain</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
它不起作用
我怎样才能开始工作
# 1 楼答案
您应该使用不同的artifactId。Maven认为(大致上)groupId:artifactId是模块的“主键”,如果您依赖于模块XXX:YYY的两个不同版本,那么它将只包括“最合适的一个”,通常是具有更高版本的一个
此外,事实证明,两个不同的模块才是您真正想要的,因为您实际上没有相同模块的两个版本,而是一个模块X依赖于一个不同的Y,第三个模块Z依赖于X和Y(直接依赖于X,间接依赖于Y到X)
因此,如果你有:
01中央域名pom。xml:
02CentralDomain pom。xml:
02CentralExecution pom。xml:
那么一切都应该“正常运转”