如何为詹金斯工作动态设置本地maven repo

How to dynamically set the local maven repo for a jenkins job

我正在尝试使用 Jenkins 远程访问创建一个 Jenkins 作业 API[1]。我想要实现的是,我想为作业指定本地 Maven 存储库(而不是使用全局存储库),使用我发送到创建作业 API 的作业配置(config.xml)。我怎样才能做到这一点?我应该添加(或更改)的 xml 属性是什么?

[1] https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

根据 API 是这样的:

curl -X POST -H "Content-Type:application/xml" -d @config.xml "http://JENKINS_HOST/createItem?name=Some_Job_Name"

根据需要手动配置作业,然后访问 URL $JENKINS/job/$JOB/config.xml — 在那里您将能够看到所需配置需要哪些 XML 标签。

我们可以通过在作业配置中指定 localRepository 元素来为特定作业定义本地 maven 存储库。 默认情况下,jenkins 开箱即用地支持三个选项。

  1. 默认存储库(~/.m2/repository)

    <localRepository class="hudson.maven.local_repo.DefaultLocalRepositoryLocator"/>
    
  2. 本地执行器

    <localRepository class="hudson.maven.local_repo.PerExecutorLocalRepositoryLocator"/>
    
  3. 工作区本地

    <localRepository class="hudson.maven.local_repo.PerJobLocalRepositoryLocator"/>
    

因此,如果您想根据构建参数或构建信息定义自己的本地存储库定位器,您可以扩展 hudson.maven.local_repo.LocalRepositoryLocator class 并实现自己的逻辑并在 [=14] 下指定=]作业配置中的元素。 例如:

<localRepository class="org.sample.MyOwnLocalRepositoryLocator"/>