[英]Jenkins building a product consisting of many Maven projects? (with Jenkins Pipeline plugin?)
[英]Jenkins Pipeline Plugin — getting and building dependencies
我是詹金斯(Jenkins)的新手,而我的搜索却很少,以至于我觉得我还没有掌握该术语。
我有一个要与Jenkins Pipelines建立的项目。 这是一个GIT存储库中的Java / Maven项目。 它依赖于我的另外两个Java / maven项目,同样在GIT存储库中。
我如何向詹金斯解释这种关系?
让我们简化一下。 假设我有依赖于ProjectB的ProjectA。 我可以让詹金斯构建ProjectB没问题。 如果需要,我甚至可以存档jar,因此ProjectB的编译副本存储在我的Jenkins服务器中。
但是无论我做什么,ProjectA都无法使用
[错误]无法在项目ProjectA上执行目标:无法解析项目ProjectA的依赖项:无法解析以下工件:ProjectB:jar:0.9:无法在https://repo.maven中找到ProjectB:jar:0.9 。 apache.org/maven2已缓存在本地存储库中,直到中心的更新间隔过去或强制执行更新后,解决方案才会重新尝试-> [帮助1]
这非常简单,我什至不知道自己需要搜索什么。
我在ProjectA中的Jenkinsfile现在看起来像这样:
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'
}
}
}
}
项目A独立于项目B。在Jenkins中归档它们不会将它们放在Maven可以识别并将其用作依赖项的任何位置。 您必须确保自己的Maven工作知道如何找到他们。 有两种选择。
您可以发布到类似工件的存储库。 然后,只需将Maven配置为查看该存储库即可。
您可以使用Jenkins REST API,甚至可以使用uri查找新工件并将其下载到工作区中。
您可以使用Copy Artifact插件将工件从另一个版本中拉入您的工作空间,以便可以使用它。
或者,由于它是管道,因此您可以在同一管道的不同阶段构建这两块。
如果您在作业B中构建的库仅专门用于作业A,则可以考虑将它们全部构建在同一管道中。 但是有时候使用某种外部存储库来发布您的库仍然更有意义,然后只需配置Maven以查看该存储库即可找到您的依赖项。 我通常会使用该选项,但是它确实需要更多的软件和更多的设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.