【发布时间】:2015-04-22 22:50:40
【问题描述】:
我有一个多模块 maven 项目,例如
一个 乙 C D 乙 目前这个项目运行良好,只有一个工作来构建所有模块并上传到带有某些版本的工件,例如4.0.0-。他们正在使用 Jenkins 作业中的版本:set -DnewVersion=4.0.0-${BUILD_NUMBER}。现在我的下一个任务是将这个项目拆分为模块,以便他们的开发团队可以独立构建每个模块,但我的问题是某些模块依赖于其他模块,例如
模块 B 依赖于模块 A 和模块 C。如果我先构建模块 A,然后它会生成数字 4.0.0-00001 并将其上传到工件,然后我构建模块 C,然后它会生成构建4.0.0-00005。现在问题来了,我该如何构建依赖于模块A和C的模块B。我认为我需要在依赖部分明确定义模块A和C的版本。
<dependency>
<groupId>com.xyz.engine</groupId>
<artifactId>A</artifactId>
<version>4.0.0-00005</version>
</dependency>
从我的模块 POM 我打电话给我的父母 POM 并且在詹金斯的工作中我正在给 版本:设置 -DnewVersion=4.0.0-${BUILD_NUMBER} 用于版本控制,如果我明确定义 A 模块的版本,那么它也会将相同的值传递给父 POM 并搜索它不可用的。下面是我的模块 POM 文件
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.truvenhealth.analyticsengine</groupId>
<artifactId>AnalyticsEngine</artifactId>
<version>4.0.0-00002</version>
</parent>
<artifactId>LicenseVerifier</artifactId>
<name>LicenseVerifier</name>
<packaging>jar</packaging>
<dependencies>
<!-- Modules dependencies -->
<dependency>
<groupId>com.xyz.engine</groupId>
<artifactId>Common</artifactId>
<version>4.0.0-00007</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<!-- External dependencies -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.verhas</groupId>
<artifactId>license3j</artifactId>
<version>1.0.4</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<!-- Plugin configurations inherited from the parent POM -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
它为我分配给公共模块的父 POM 采用相同的值。我将父 POM 保存在单独的存储库中它不应该采用相同的值它应该只采用我为父 POM 定义的值和它应该从他们那里下载它并向模块 POM 提供所有值,并且应该为具有不同版本的模块 LicenseVerifier 创建构建。
【问题讨论】:
标签: maven-3 pom.xml parent-pom