Maven不同的本地存储库用于SNAPSHOT和RELEASE工件

时间:2017-01-12 10:03:52

标签: maven jenkins maven-3

是否可以在Maven中为SNAPSHOT和RELEASE工件配置不同的本地存储库?

我问的原因是,我们正在使用Jenkins为我们的项目进行持续构建。为了确保一致性(如果由于竞争条件而在不同的Jenkins作业中构建相同的工件,我们可以在构建开始之前体验混乱行为),我们为Jenkins创建了一个新的本地存储库。

现在的问题是,我们的项目非常庞大,因此对于每个版本我们都必须从Nexus下载大量依赖项,但是当您考虑它时,没有理由每次都有新的RELEASE工件下载。 RELEASE工件不会从构建更改为构建,例如,Spring 4.5,httpclient 4.0,aspectj 1.8.1对于一个构建到另一个构建是相同的。

所以实际上为了确保一致性,我们不应该在存储库中拥有SNAPSHOT依赖项。如果我们有两个本地存储库,一个用于RELEASE工件,另一个用于SNAPSHOT,那么在每个构建开始之前,我们可以删除SNAPSHOT存储库但重新使用本地RELEASE存储库,这将节省我的千兆字节下载关系。

我知道我们可以为远程存储库执行RELEASE,SNAPSHOT配置,是否可以为本地存储库执行相同类型的配置?

如果无法做到这一点,您将如何解决此问题。

2 个答案:

答案 0 :(得分:0)

你的Jenkins将有一个本地maven安装,而后者又有一个本地存储库,对于SNAPSHOT和RELEASE来说应该是相同的。

从Nexus下载依赖项后,它将被存储在本地而不会再次下载,这将是高效的。

因此,您第一次构建项目时,只能从Nexus下载大量文件。

答案 1 :(得分:0)

目前尚无办法实现这一目标,是的,我同意这一观点。

Jenkins的Maven插件的最新版本允许您指定自定义本地存储库,而无需编辑UIViewController文件-该选项就在作业定义屏幕上(在final docRef = Firestore.instance.collection('details').doc() Firestore.instance.runTransaction((Transaction tx) async { DocumentSnapshot docSnapshot = await tx.get(docRef); if (docSnapshot.exists) { await transaction.update(docRef, { 'othernames': FieldValue.arrayUnion( [ { "name": name, }, ], ) }); } }); 中)部分,选择settings.xml

因此,我将使用此选项,并在Maven构建步骤之前添加一个脚本,该脚本删除本地私有存储库中所有以Advanced结尾的目录。

这令人反感,但我想不出其他任何方式。

相关问题