我是詹金斯的新手,而且我的搜索量很少,我认为我还没有获得术语。
我有一个项目,我想用Jenkins Pipelines构建。它是GIT存储库中的Java / maven项目。这取决于我的另外两个Java / maven项目,也取决于GIT存储库。
如何向Jenkins解释这种关系?
让我们简化一下。假设我拥有依赖于ProjectB的ProjectA。我可以让Jenkins构建ProjectB没问题。如果需要,我甚至可以存档jar,因此ProjectB的编译副本存储在我的Jenkins服务器中。
但无论我做什么,ProjectA都无法使用
进行构建[错误]无法在项目ProjectA上执行目标:无法解析项目ProjectA的依赖项:无法解析以下工件:ProjectB:jar:0.9:无法在https://repo.maven.apache.org/maven2中找到ProjectB:jar:0.9缓存在本地存储库中,在中心的更新间隔过去或强制更新之前,不会重新尝试解析 - > [帮助1]
这很简单,我只是无法弄清楚我甚至需要搜索的内容。
ProjectA中的My Jenkins文件现在看起来像这样:
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
build 'ProjectB'
sh 'mvn -B -DskipTests clean package'
}
}
}
}
答案 0 :(得分:1)
项目A独立于项目B.在Jenkins中存档它们并不会将它们放在Maven可以识别的任何地方并将它们用作依赖项。你必须确保你的maven工作知道如何找到它们。有几种选择。
您可以发布到像神器一样的存储库。然后需要配置Maven以查看该回购。
如果是新版本,您可以使用Jenkins REST API,甚至只使用uri来查找工件并将其下载到工作区中。
您可以使用Copy Artifact插件将工件从另一个构建中拉入工作区,以便您可以使用它。
或者,由于它是一个管道,您可以在同一管道的不同阶段构建两个部分。
如果您在作业B中构建的图书馆仅专门用于作业A,我会考虑在同一管道中构建它们。但有时使用某种外部存储库来发布库仍然更有意义,然后只需配置maven来查看该repo以查找依赖项。我通常会使用该选项,但它需要更多软件和更多设置。