我们有一个Nexus本地存储库管理器,它可以处理我们所有的内部项目(以及镜像外部存储库)。对于我们的内部项目,我们只保留最新版本的快照构建。例如,如果我们有ProjectX 1.0,1.1和1.2-SNAPSHOT,一旦1.2发布,我们将删除1.2-SNAPSHOT,然后在我们的Nexus存储库中有1.0,1.1,1.2和1.3-SNAPSHOT。
问题是我们的Jenkins服务器在其本地.m2 / repository文件夹中具有所有OLD快照,并继续针对这些旧快照成功构建项目,而实际上它们应该失败(我们的开发人员应该修复它们的POM文件。)
是否可以配置Maven(在settings.xml或pom.xml中)删除Nexus存储库中不存在的这些不需要的快照?
如果没有,摆脱它们的最佳方法是什么? Jenkins配置,cron作业,其他选项?
...谢谢
答案 0 :(得分:3)
答案 1 :(得分:1)
在Linux上,您可以使用以下命令:
*-SNAPSHOT
说明:
$HOME/.m2/repository/
-exec
的内容
-prune
将删除该文件夹,-exec
告诉发现以后不要尝试输入该文件夹。//in another class called URL-Service.ts you will need to add this
//to providers at the root level in app.module
export class URLService {
public savedURL: string = '';
}
//in another class where you have access to the url
export class SomeClass {
constructor(private urlService = URLService){}
someMethod(){
this.urlService.savedURL = whateverHasTheURL;
}
}
export class DataService {
constructor (private urlService = URLService, private http: Http) {
this.url = this.urlService.savedURL;
}
...
}
将删除里面的文件夹和文件。答案 2 :(得分:0)
我们在这里使用类似的设置。我们让nexus在工件发布后自动删除快照(对于某些存储库)。然后在我们的连续服务器上,我们只有一个cron作业,每天删除一次本地存储库文件夹。这对我们很有用。
答案 3 :(得分:0)
首先,如果您使用jenkins构建最佳实践以获得干净的构建,这意味着每个构建使用本地存储库而不是服务器的全局。此外,听起来你没有使用发布插件来释放你的工件,它会自动检查pom是否包含SNAPSHOTs,如果有的话会失败。此外,可以通过maven-dependency-plugin清理本地存储库。根据我的经验,我简单地配置了一个任务,删除超过一个月的SNAPSHOT ......
答案 4 :(得分:-3)
这可能是jenkins服务器上maven的配置问题。
通过在<updatePolicy>
部分中为<repository>
配置<snapshots>
的值,maven可以而且应configured定期查找更新的快照。
<updatePolicy>daily</updatePolicy>
选项包括:always
,daily
(默认),interval:X
(其中X是以分钟为单位的整数)或never
。
此外,如果版本发生更改(从1.1-SNAPSHOT
更改为1.2-SNAPSHOT
),则不清楚jenkins如何使用较早的(1.1-SNAPSHOT
版本成功构建。