Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven pom依赖项的Jenkins环境变量_Maven_Jenkins_Dependencies_Environment Variables_Pom.xml - Fatal编程技术网

Maven pom依赖项的Jenkins环境变量

Maven pom依赖项的Jenkins环境变量,maven,jenkins,dependencies,environment-variables,pom.xml,Maven,Jenkins,Dependencies,Environment Variables,Pom.xml,我们在jenkins上有几个作业,它们在彼此的层次依赖关系上运行 比方说,对于pom.xml版本,Job2依赖于Job1。 因此,每当我们在sprint结束时对Job1进行更改时,我们都需要在sprint结束时发布工件之前更改Job2内部依赖项上的pom版本,因此如果我们有依赖于Job1版本的Job3、Job4、Job5,这可能并不方便。我们需要更改所有依赖于它的作业的pom.xml上的所有Job1版本 那么问题是,有没有办法解决这个问题,可能是使用jenkins env变量?基于上述问题,需要

我们在jenkins上有几个作业,它们在彼此的层次依赖关系上运行

比方说,对于pom.xml版本,Job2依赖于Job1。 因此,每当我们在sprint结束时对Job1进行更改时,我们都需要在sprint结束时发布工件之前更改Job2内部依赖项上的pom版本,因此如果我们有依赖于Job1版本的Job3、Job4、Job5,这可能并不方便。我们需要更改所有依赖于它的作业的pom.xml上的所有Job1版本

那么问题是,有没有办法解决这个问题,可能是使用jenkins env变量?基于上述问题,需要一个如何执行的帮手


谢谢。

您可以使用jenkins将变量传递给下游项目。Plugin wiki得到了详细的解释。

因为在执行Job1结束时您将获得所需的版本,所以将其导出为环境变量或将其存储在构建服务器上的某些文件中,如

pom_version=1.1
现在,在触发所有下游作业时,将作业的参数设置为“pom_version”,并传递此文件以拾取所需的键/值,或在预定义参数中设置值


之后,确保所有下游作业都配置为使用参数“pom_version”进行参数化,以便在内部开发的工件之间具有依赖关系。在开发过程中,您希望依赖于这些工件的最新快照,但发布版本应依赖于这些相同工件的最新发布版本

这可以通过詹金斯和马文实现。设置发布构建作业,如下所示:

  • 添加“调用顶级Maven目标”类型的“预步骤”部分。在此步骤中,您运行targets
    versions:updateproperties scm:checkin
    ,以更新内部依赖项以指向最新版本
  • 在主构建步骤中执行发布:
    release:prepare release:perform-B
    。这将生成发布版本,将版本号增加到下一个快照版本,生成下一个快照版本并将其检回scm
  • 在“后步骤”中,再次运行前步骤的目标(使用
    allowSnapshots=true
    )以更新依赖项以引用最新的快照版本
  • 示例:


    注意:要使其工作,所有作业都必须访问同一个Maven存储库。本地在Jenkins服务器或您的公司Nexus上。

    您是否使用快照?您的作业是否正在发布maven工件,并且您需要在下游发布版本中引用最新版本?@khmarbaise在开发过程中,我们在依赖项的版本上使用-SNAPSHOT,但是,当我们需要在sprint结束时释放工件时,我们需要在版本上排除单词snapshot,这表明我们将使用依赖项的发布版本,因为我们发布工件上的命名约定只是版本号no-release word。@Ralf yes,特别是最新版本的依赖项。可能的重复项似乎仅用于触发依赖于Job1的构建,但这是否有pom版本依赖项的环境变量。我不理解这些,其他作业的pom版本将如何获得Job1Maven的pom版本,因为新版本是本地安装的,并且可以选择部署到您的公司存储库中,例如Nexus。我要补充一点,所有作业都必须访问同一个Maven存储库才能工作。