情况是,我有两个具有相同结构的Maven多模块项目:
Parent
- Module 1
- Module 2
当我构建项目1时,我看到父项是首先构建的(顺序是parent-> module1-> module2).但是对于项目2,父项是最后构建的(顺序是module1-> module2-> parent).为什么这两个项目有不同的构建订单?此外,如何手动控制构建顺序?
更新1:
两个父项目都是没有源代码的简单POM项目,因此我无法根据依赖关系图解释构建顺序.
更新2:
除了GAV和子模块名称之外,父POM是相同的:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>parent-group-id</groupId>
<artifactId>parent-artifact-id</artifactId>
<version>parent-version</version>
<packaging>pom</packaging>
<name>parent-name</name>
<modules>
<module>module-1</module>
<module>module-2</module>
</modules>
</project>
我有一堆项目,如:
project1
project2
project3
........
project111
Run Code Online (Sandbox Code Playgroud)
每个项目都在jar中编译:project-1.1.1.1.jar,....是否可以在父文件夹中添加pom.xml,以便为所有项目定义版本1时间?
我有一个多模块(聚合器)Maven项目,它也从父pom继承属性.所以在我的父pom.xml中我有这个:
<groupId>com.something.project</groupId>
<artifactId>MyProject</artifactId>
<packaging>pom</packaging>
<version>1.0.123</version>
<modules>
<module>ModuleA</module>
<module>ModuleB</module>
<module>ModuleC</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
我想让所有子模块继承父版本号1.0.123,但是孩子pom.xml要求我继续硬编码父版本号(ModuleA pom.xml示例):
<artifactId>ModuleA</artifactId>
<name>Some Amazing Thing</name>
<parent>
<relativePath>../</relativePath>
<artifactId>MyProject</artifactId>
<version>1.0.123</version>
<groupId>com.something.project</groupId>
</parent>
Run Code Online (Sandbox Code Playgroud)
我怎样才能将版本号放在父pom中,让模块继承它而不必在多个地方更新它?到目前为止,我已经尝试了$ {project.version}和$ {project.parent.version},Maven似乎对此非常不满意.我也不能完全删除版本参考.
有没有人对此有一个好的答案?