在依赖升级的情况下自动构建 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 项目的主要内容,如果未能解决你的问题,请参考以下文章

Gradle Vs Maven:Java项目构建工具如何选择?

Maven 教程

Maven

项目自动构建工具对比(MavenGradleAnt)

项目自动构建工具对比(MavenGradleAnt)

Maven - 在不构建的情况下安装项目依赖项