我的项目有3个maven模块,它们是由nodejs脚本构建的。
现在我想与Jenkin和Nexus整合。我的Jenkin构建配置看起来像这样:
我还在构建部分的提供配置文件构建步骤中添加了我的maven settings.xml
,但它没有用。 Maven仍然失败,无法解决我的Nexus仓库中的依赖关系。
在我的本地专家settings.xml
中,我为Nexus存储库和另一个存储库添加了一些配置。
你能否为我这个案子加油?我是Jenkin的新手。
提前致谢。
答案 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)。
这就是我避免这种风险的方法(逐步):
clean install -s settings.xml
请注意,我在詹金斯创建的构建项目是一个Maven项目。
答案 3 :(得分:0)
答案 4 :(得分:0)
还有一种方法:
@Anh N. Nguyen
答案的扩展,但注意不在源代码管理中存储机密。@Harikrishnan
更简单,步骤更少,不需要任何额外的插件 (config-file-provider)步骤:
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>
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'
}
}
...
}
}