在依赖升级的情况下自动构建 Maven 项目
Posted
技术标签:
【中文标题】在依赖升级的情况下自动构建 Maven 项目【英文标题】:Automatically build Maven Project in case of a dependency upgrade 【发布时间】:2017-10-02 04:52:07 【问题描述】:我正在将 Jenkins 用于 CI/CD。 Jenkins 与我的 GIT 帐户集成在一起,一旦代码有更新,Jenkins 就会自动构建它。
假设我正在使用 Spring Framework,并且 Spring 框架的版本已更新。如何使用 Jenkins 和 Maven 自动构建所有使用 Spring 框架的项目?有什么插件可以做到吗?如果有人可以分享一些相同的教程/网址等会很棒吗?
【问题讨论】:
这不是 maven 的预期用途。您为不可变的依赖项选择了一个版本。更改版本会带来问题,您无法自动进行。 应该自动完成,这样更有意义。例如,我在大约 100 个项目中使用 Spring Security 依赖项。让我们假设 Spring Security 获得了重要的安全升级。手动构建所有这些项目是没有意义的,应该有一些方法可以自动构建所有这些项目。 我明白了,我已经添加了答案。 【参考方案1】:创建您自己的父 pom 并使用 dependency management section
<?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>com.greg</groupId>
<artifactId>ear-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
然后在您的子 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.greg</groupId>
<artifactId>ear-example</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>example-ear</artifactId>
<packaging>ear</packaging>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
【讨论】:
以上是关于在依赖升级的情况下自动构建 Maven 项目的主要内容,如果未能解决你的问题,请参考以下文章