[英]Maven: Dependency to pom module is not include submodules from it
项目有下一个结构:
root
|
+--Module 1
| |
| +--Submodule_1
| |
| +--Submodule_2
| |
| +--Submodule_N
|
+--Module 2
Module 2
依赖于Module 1
和从子模块 1..N 对类的预期访问
Root
pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>root</artifactId>
<version>master</version>
<packaging>pom</packaging>
<modules>
<module>Module_1</module>
<module>Module_2</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>
Module 1
pom.xml:
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>root</artifactId>
<version>master</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module_1</artifactId>
<packaging>pom</packaging>
<modules>
<module>Submodule_1</module>
<module>Submodule_2</module>
...
<module>Submodule_N</module>
</modules>
</project>
Submodule_N
_N pom.xml:
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>Module_1</artifactId>
<version>master</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Submodule_N</artifactId>
</project>
Module 2
pom.xml:
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>root</artifactId>
<version>master</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module_2</artifactId>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>Module_1</artifactId>
<version>master</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
所以这个配置失败,错误package com.example.submodule_n.xy does not exist
。
如果将module 1
的依赖项添加到submodule_n
而不是 package 将被发现,但 maven 失败并出现错误...is referencing itself
。
如果将依赖项从module 2
添加到submodule_n
,则一种工作情况。 但是当module 2
对module 1
只有一个依赖项以包含来自module 1
的所有子模块时,这是预期的方式。
它可以做 gradle,但我不知道它是如何使用 maven 实现的。
如果将依赖项从模块 2 添加到 submodule_n,则一种工作情况。 但是,当模块 2 对模块 1 只有一个依赖项以包含来自模块 1 的所有子模块时,这是预期的方式
那是您的期望实际上是无效的。
配置的目的如:
<modules> <module>Submodule_1</module> <module>Submodule_2</module>... <module>Submodule_N</module> </modules>
是为了以某种方式组织项目结构,它与 java 库之间的依赖关系没有任何共同之处(尽管它会影响构建生命周期),此外,配置如下:
<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>Module_1</artifactId> <version>master</version> <scope>compile</scope> </dependency> </dependencies>
通常没有意义,因为库可能不依赖于 pom - 实际上这只是告诉 maven 在Module_1
之后构建Module_2
。
总结上面的陈述:如果Module_2
依赖于 Submodule_N 您必须在Submodule_N
中明确定义该依赖项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.