我相信答案会非常简单,但我还没弄清楚如何做到这一点 .
The problem is:
我有一个第三方项目,正在从github克隆,所以我不会在那里改变任何东西,但是我需要这个项目用于我的MUnit工作 .
该项目是mule-interceptor-module,它有一个版本3.4-M4-SNAPSHOT .
我在Jenkins中创建了一个版本,我希望在它之后得到 mule-interceptor-module-3.4-M4-SNAPSHOT.jar ,但是 Jenkins REMOVES -SNAPSHOT from the jar name and updates pom.xml with new version: 3.4-M4 instead of 3.4-M4-SNAPSHOT . 该项目在其依赖项中使用此项目(munit)具有3.4-M4-SNAPSHOT . 所以我需要版本中的SNAPSHOT .
What I tried to do:
我尝试在服务器上构建相同的项目,我的Jenkins安装在该服务器上,只使用mvn clean install,我得到了mule-interceptor-module-3.4-M4-SNAPSHOT.jar .
The question is:
如何调整Jenkins以便我最终可以进行SNAPSHOT构建?
My job setup:
-
JDK:jdk 1.6.0_45
-
源代码管理:
-
Git
-
存储库URL:https://github.com/mulesoft/mule-interceptor-module.git
-
Branch Specifier(默认为空):3.4.x
-
存储库浏览器:githubweb
-
前步骤:
-
执行shell:git checkout 3.4.x
-
Build :
-
Root POM:pom.xml
-
目标和选项:全新安装
-
发布步骤:
-
无论构建结果如何都运行
-
构建设置: - 发布Checkstyle分析结果 - 发布FindBugs分析结果
Jenkins Console output Jenkins Console output wirh -X
The solution:
在Jenkins / Configuration / Build / Advanced中
-
检入使用私有Maven存储库
-
选择策略:本地工作区
-
通过
rm -R *
删除/ workspace文件夹中的所有内容
@Grove:非常感谢你的支持!
3 回答
我可以在日志中看到:
Your branch is ahead of 'origin/3.4.x' by 1 commit.
和Building Mule Interceptor Module 3.4-M4
. 可能是你的版本在pom中有3.4-M4作为版本吗?解决方案:
在Jenkins / Configuration / Build / Advanced中
检入使用私有Maven存储库
选择策略:本地工作区
通过rm -R *删除/ workspace文件夹中的所有内容
为什么使用来自第三方的SNAPSHOT依赖?标准是使用RELEASE版本,对吧?
Answer 无论如何,使用私有maven存储库为您工作的事实只证明了一件事,即服务器maven存储库中的negative cache导致问题 . 一年多前从我这里看到这个Q and A,当完全相同的解决方案对我有用时,albiet针对不同的问题我将其标记为答案 . 只是发现几个月后,我没有找到问题的根本原因,只是发现了一个工作量 .
要测试此理论,请设置
<updatepolicy> true <updatepolicy>
和use maven -U clean install
. 它将与您使用私人仓库的解决方案具有相同的效果 .