Maven settings.xml相关问题

时间:2016-01-08 05:22:07

标签: java maven maven-plugin

我一直在面对.git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)的一些问题。实际上问题是在工作场所我需要指向我们的VPN上的不同存储库,而在尝试新的示例的情况下,我想忽略在VPN上配置的存储库服务器的settings.xml。有没有办法可以做到?目前我正在做的是,我只需将settings.xml的名称更改为settings.xml即可。但我厌倦了做这些改变。

我的同事做的一件事就是将settings.xml保存在项目本身中。我不喜欢它,因为它是maven存储库配置,它不应该保存在项目本身。对于同样的事情,我也从快速入门指南中得到了类似的参考。来自official documentation on settings

  

settings.xml文件中的settings元素包含用于定义以各种方式配置Maven执行的值的元素,例如pom.xml,但不应捆绑到任何特定项目或分发给受众。

如果您有任何解决方案,请随时回答。

2 个答案:

答案 0 :(得分:2)

如果您的settings.xml文件中定义了存储库,则它们会在配置文件中定义,我认为默认情况下它是活动的,应用official documentation上建议的标准方法。假设此配置文件名为vpn-rep(通过其id元素)。

然后,您可以添加第二个配置文件,该配置文件声明您想要的任何存储库,默认情况下不会处于活动状所以,没有影响。你可以称之为my-rep

然后,由于它们是配置文件,您可以从命令行轻松switch,如下所示:

  • 使用VPN存储库,不对maven命令进行更改
  • 在没有VPN存储库的情况下工作,运行mvn clean install -P!vpn-rep,my-rep

-P!vpn-rep,my-rep部分实际上将关闭vpn-rep配置文件(因此maven将不使用在其上声明的存储库,也就是说,不会使用VPN存储库)并将打开my-rep一个。

如果您实际上没有配置任何其他或特殊存储库而您只是不想使用VPN存储库,则可以跳过创建第二个配置文件并仅关闭第一个配置文件(-P!vpn-rep)然后,Maven将使用默认存储库。

此类settings.xml文件的示例如下:

<settings>
    <profiles>
        <profile>
            <id>vpn-rep</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>http://your-vpn-company-repository/libs-releases</url>
                </repository>
            </repositories>

            <pluginRepositories>
                <pluginRepository>
                   ...
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>my-rep</id>
            <repositories>
                <!-- any specific repository configuration here -->
            </repositories>
            <pluginRepositories>
                ...
            </pluginRepositories>           
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>vpn-rep</activeProfile>
    </activeProfiles>
</settings>

答案 1 :(得分:0)

我假设你有一个私有(内部工件)和公共存储库。如果是这种情况,只需将两者都添加到您的设置文件中,它将按照给定的顺序查看每个存储库

请参阅https://maven.apache.org/guides/mini/guide-multiple-repositories.html