我在settings.xml中有一个像maven中央设置的镜像:
<mirrors>
<mirror>
<id>artifactory-other</id>
<mirrorOf>*</mirrorOf>
<url>http://some.internal.site/artifactory/repo</url>
<name>Artifactory</name>
</mirror>
</mirrors>
但是此服务器只能从内部网络访问。当我在家里修补一些辅助项目时,我需要访问真正的存储库。现在我只是评论这个镜子,但这很麻烦。
如何让它自动化?是否可以使用单独的镜像定义配置文件并根据项目路径自动激活?有一些简单的解决方案吗?
答案 0 :(得分:1)
不幸的是,Maven没有开箱即用的解决方案。通常我通过git检查我的settings.xml
并为不同的网络设置不同的分支,例如工作,家庭等。结果简化为简单
git checkout HOME
或
git checkout WORK
等
答案 1 :(得分:1)
解决方案不是使用mirror-any,而是使用dependencies pom cleanups的特定存储库声明。 通过这种方式,您可以像使用mirror-any一样受到保护,不会受到未经授权的回购,并且您将能够使用不同的服务器声明配置文件(工作和家庭)。
答案 2 :(得分:0)
使用新的maven(3.3.1+),使用project-settings-extension加载项目设置,并将项目特定镜像放入每个项目中的${basedir}/.mvn/settings.xml
。
${basedir}/.mvn/extensions.xml
中的
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId>com.github.gzm55.maven</groupId>
<artifactId>project-settings-extension</artifactId>
<version>0.0.1</version>
</extension>
</extensions>
${basedir}/.mvn/settings.xml
中的
<settings>
<mirrors>
<mirror>
<id>id</id>
<url>https://internal-repo/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
然后,项目将在内部网络中使用mvn test
开箱即用,并且不会污染您的个人.m2/settings.xml