在詹金斯配置maven设置

时间:2017-05-05 04:16:40

标签: maven jenkins nexus

我的项目有3个maven模块,它们是由nodejs脚本构建的。

现在我想与Jenkin和Nexus整合。我的Jenkin构建配置看起来像这样:

Build config我还在构建部分的提供配置文件构建步骤中添加了我的maven settings.xml,但它没有用。 Maven仍然失败,无法解决我的Nexus仓库中的依赖关系。

在我的本地专家settings.xml中,我为Nexus存储库和另一个存储库添加了一些配置。

你能否为我这个案子加油?我是Jenkin的新手。

提前致谢。

5 个答案:

答案 0 :(得分:6)

我只是通过直接将mvn-settings.xml添加到我的文件夹并编辑运行命令来找到解决方法:

NLCommand("setup")
who <- list()
who[[i]] <- NLGetAgentSet(c("who","xcor","ycor"), "turtles")

答案 1 :(得分:1)

  

我还在提供配置文件中添加了我的maven settings.xml

等等......你永远不必这样做:任何maven命令都会在$HOME/.m2/settings.xml中查找settings.xml文件:你只需要确保用户运行Jenkins slave(实际上是作业)执行)确实在该特定文件夹中有该文件 然后确保用户可以首先在本地maven项目上使用mvn clean install。一旦它工作,你可以尝试你的Jenkins构建。

答案 2 :(得分:0)

我想出了一个结合了问题和答案的解决方案(均来自Anh)。 Anh解决该问题的方法是,我们必须包含settings.xml,其中可能包含凭据(在我的情况下,它具有一些机密信息),不应将其作为存储库的一部分(如注释中突出显示的那样) sigi)。

这就是我避免这种风险的方法(逐步):

  1. 在Jenkins家中,转到“管理 Jenkins>托管文件”
  2. 点击添加新配置> Maven settings.xml>保持ID未被编辑(最好)>提交
  3. 提供一个名称以便于识别和注释(如果需要),然后将xml内容复制粘贴到内容区域。单击提交。 Adding configuration XML
  4. 转到项目的构建配置,在“ 构建环境”部分下,选中“ 提供配置文件”选项。
  5. 从文件下拉列表中,选择您在上面的步骤3中添加的文件。
  6. 现在的重点是填写“目标”字段。提供文件名(如果需要,请提供相对于项目的路径)。如果需要在构建配置的其他部分中使用配置(也来自Config文件提供程序插件),则还可以选择填写变量名。 Provide configuration files
  7. 现在在“构建”部分中,提供以下命令,以从检出的项目路径(jenkins复制到此处供您使用)中获取settings.xml文件:
    clean install -s settings.xml

请注意,我在詹金斯创建的构建项目是一个Maven项目。

答案 3 :(得分:0)

enter image description here转到您的作业配置

而不是“构建”部分

添加构建步骤:-调用顶级Maven目标并填充Maven版本和目标

比单击“高级”按钮并在图像中提及设置文件路径

答案 4 :(得分:0)

还有一种方法:

  1. 这是 @Anh N. Nguyen 答案的扩展,但注意不在源代码管理中存储机密。
  2. @Harikrishnan 更简单,步骤更少,不需要任何额外的插件 (config-file-provider)

步骤:

  1. 配置 mvn-settings.xml 以从环境变量中读取机密。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <servers>
    <server>
      <id>nexus</id>
      <username>${env.NEXUS_USER}</username>
      <password>${env.NEXUS_PASSWORD}</password>
    </server>
  </servers>
</settings>
  1. 您现在可以在源代码管理中签入,完全安全。
  2. 在作业环境变量中公开您的 Jenkins 凭据机密(声明性管道的语法)
pipeline {
  agent {...}
  environment {
    NEXUS_CREDS = credentials('NexusArtifactoryLogin')
    NEXUS_USER = "$NEXUS_CREDS_USR"
    NEXUS_PASSWORD = "$NEXUS_CREDS_PSW"
  }
  stages {
    ...
    stage('Build') {
      steps {
          \\assuming mvn-settings.xml is at root/current folder, otherwise provide absolute or relative path
          sh 'mvn -s mvn-settings.xml clean install'
      }
    }
    ...
  }
}