在构建grails项目时,如何覆盖用户Maven设置文件?

时间:2014-08-18 18:54:21

标签: maven grails jenkins

我使用Grails 2.4.1通过Jenkins& amp;来构建Grails插件项目。 Grails Release插件(3.0.1)将该插件发布到我们的Nexus存储库。

在我们的构建服务器上运行Jetbrains(jetbrains)的用户已经有一个.m2 / settings.xml文件。该文件定义了一些在尝试将插件发布到我们的nexus存储库时导致havok的Mirrors。 settings.xml文件中定义的镜像将所有内容重新路由到公共组'。

我想做的是针对特定的作业强制maven要么一起忽略settings.xml文件,要么指定我自己的文件。

我可以将文件放在M2_HOME / conf目录中,但由于用户目录已经有一个包含镜像的settings.xml文件,所以我在M2_HOME / conf目录中所做的任何操作都会被忽略。

我已经看过-s file-name-here解决方案了,但是在构建时我没有看到通过grails publish-plugin命令传递的方法。

我也愿意接受重新定义我们镜像的解决方案,以便除了我们的内部存储库之外的所有内容都被重新路由。

我拥有的镜像块是:

<mirror>
    <id>nexus</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus Public Mirror</name>
    <url>http://maven.internal.website/nexus/content/groups/public</url>
</mirror>

根据the Maven Mirror guide,我已尝试过:

<mirror>
    <id>nexus</id>
    <mirrorOf>external:*</mirrorOf>
    <name>Nexus Public Mirror</name>
    <url>http://maven.internal.website/nexus/content/groups/public</url>
</mirror>

<mirror>
    <id>nexus</id>
    <mirrorOf>external:*,!snapshots,!releases</mirrorOf>
    <name>Nexus Public Mirror</name>
    <url>http://maven.internal.website/nexus/content/groups/public</url>
</mirror>

<mirror>
    <id>nexus</id>
    <mirrorOf>*,!snapshots,!releases</mirrorOf>
    <name>Nexus Public Mirror</name>
    <url>http://maven.internal.website/nexus/content/groups/public</url>
</mirror>

1 个答案:

答案 0 :(得分:0)

在发布我的问题后,我立刻意识到我没有尝试过一种模式......它似乎工作得很好:

<mirror>
    <id>nexus</id>
    <mirrorOf>!snapshots,!releases</mirrorOf>
    <name>Nexus Public Mirror</name>
    <url>http://maven.internal.website/nexus/content/groups/public</url>
</mirror>