Java 如何不从settings.xml服务器中提取模块(依赖项)?
我有以下项目包结构Java 如何不从settings.xml服务器中提取模块(依赖项)?,java,maven,maven-module,Java,Maven,Maven Module,我有以下项目包结构 parent |- module1 |- module2 |- module3 我能够将module3作为依赖项包含在module1和module2的pom.xml文件中。这使我能够访问模块3中的所有依赖项和代码 <dependency> <groupId>my.group</groupId> <artifactId>module3</artifactId> <version&
parent
|- module1
|- module2
|- module3
我能够将module3作为依赖项包含在module1和module2的pom.xml文件中。这使我能够访问模块3中的所有依赖项和代码
<dependency>
<groupId>my.group</groupId>
<artifactId>module3</artifactId>
<version>1.0.0</version>
</dependency>
理想情况下,module3根本不会作为工件部署,相反,它可能只是具有pom
。module3只是一些只应由module1和module2使用的模块。此外,供参考,模块3的依赖关系树构建得非常好。- 确保模块的版本正确
pom
。需要适当的JAR,还需要部署到存储库中
-pl
据我所知,以下maven模块是同一个反应堆的一部分:
parent
|- module1
|- module2
|- module3
父级
应具有:
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
尽管这可能很奇怪,但这应该是可行的
您还可以使用
--offline
强制maven不联机。您不应该将模块3
作为父级的第一个模块吗?@ernest\k排序只是基于命名约定的包结构。我是否应该重命名module3,使其位于前面?我试图指出的一点是,module3
应该在其他模块之前构建。那是因为其他两个都依赖它。不管它们的名称如何,其他人依赖的模块应该在父pom中声明。module3是在其他人之前构建的,但是,当已经有本地版本可用时,它仍然会尝试远程搜索。尽管如此,我没有对父pom运行maven命令。它只是反对模块1或模块2。重命名module3->module0会解决问题吗?如果它将该模块置于包结构中的其他模块之前?否,它无法通过更改模块名称来解析。-确保:+包括并订购父pom中的所有模块只需使用1个版本,它与父级->的版本相同,您不需要在Dependencies中声明版本检查项目中的依赖项以确保没有冲突。更正所有错误,如果错误仍然发生,请描述更多细节或添加项目的setting.xml文件。没有足够的信息让我回答细节,到底是什么错误。如果您将BOM作为依赖项,则不应将其打包为pom?BOM请转到
。它们应该是包装pom
。我有点含糊,“依赖性”是指“您依赖的Java代码”。这实际上是我在回答中没有提到的,但这是一个有效的用例。什么是元模块?包括pom并没有解决它试图从源代码中提取的问题,事实上它在module1和module2中创建了识别module3的问题。有没有一种方法可以将-o或-offline的等价物写在pom本身中?我指的是一个带来依赖性但本身不是jar的模块。我很确定它应该与type=pom一起工作。但是,您有两个用例1)mvn干净安装2)mvn依赖项:树。dependency:树可能不使用reactor中的工件,如果您不先安装mvn,这将下载它。如果某个东西有类,它就不能打包pom
。
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
<dependency>
<groupId>my.group</groupId>
<artifactId>module3</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>