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不,这是不可能的:(感谢您提供详细的答案和其中的链接。)