Java Maven settings.xml相关问题

Java Maven settings.xml相关问题,java,maven,maven-plugin,Java,Maven,Maven Plugin,我在settings.xml方面遇到了一些问题。实际上,问题出在工作场所,我需要指向VPN上的不同存储库,而在尝试新示例时,我想忽略VPN上配置了存储库服务器的设置.xml。有什么办法我能做到吗?目前我所做的只是简单地将settings.xml的名称更改为settings.xml1,它就可以工作了。但我厌倦了做这样的改变 我的同事正在做的一件事是将settings.xml保存在项目本身中。我不喜欢它,因为它是maven存储库配置,不应该保存在项目本身中。同样,我也从《快速入门指南》中获得了类似的

我在
settings.xml
方面遇到了一些问题。实际上,问题出在工作场所,我需要指向VPN上的不同存储库,而在尝试新示例时,我想忽略VPN上配置了存储库服务器的
设置.xml
。有什么办法我能做到吗?目前我所做的只是简单地将
settings.xml
的名称更改为
settings.xml1
,它就可以工作了。但我厌倦了做这样的改变

我的同事正在做的一件事是将settings.xml保存在项目本身中。我不喜欢它,因为它是maven存储库配置,不应该保存在项目本身中。同样,我也从《快速入门指南》中获得了类似的参考资料。发件人:

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


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

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


请参见

如果存储库是在您的
settings.xml
文件中定义的,则它们将因此在配置文件中定义,我猜该配置文件在默认情况下处于活动状态,并应用上建议的标准方法。假设此配置文件称为
vpn rep
(通过其
id
元素)

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

然后,由于它们是概要文件,您可以通过命令行轻松地从一个概要文件切换到另一个概要文件,如下所示:

  • 在VPN存储库上工作,不更改maven命令
  • 在没有VPN存储库的情况下运行
    mvn clean install-P!vpn代表,我的代表
-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>

vpn代表
中心的
http://your-vpn-company-repository/libs-releases
...
我的代表
...
vpn代表

是否可以将您的存储库服务器设置为公共存储库的代理?这样,您就不需要2个settings.xml文件(Maven的默认文件和您工作场所特有的文件)。@Ralf不,这是不可能的:(感谢您提供详细的答案和其中的链接。)