3

我在 settings.xml 中有一个用于 Maven 中央设置的镜像,如下所示:

<mirrors>
  <mirror>
    <id>artifactory-other</id>
    <mirrorOf>*</mirrorOf>
    <url>http://some.internal.site/artifactory/repo</url>
    <name>Artifactory</name>
  </mirror>
</mirrors>

但是这个服务器只能从内部网络访问。当我在家并修补一些副项目时,我需要访问真正的存储库。现在我只是把这面镜子评论出来,但它很麻烦。

我怎样才能让它自动化?是否可以使用单独的镜像定义配置文件并根据项目路径自动激活?有一些简单的解决方案吗?

4

3 回答 3

2

不幸的是,Maven 没有开箱即用的解决方案。通常我settings.xml通过 git 签入,并为不同的网络(如工作、家庭等)设置不同的分支。结果简化为一个简单的

git checkout HOME

或者

git checkout WORK

等等

于 2013-06-20T05:25:18.183 回答
1

该解决方案不使用任何镜像,而是使用具有依赖关系的特定存储库声明 pom cleanups。这样一来,您就可以像使用 mirror-any 一样保护您免于进入未经授权的存储库,并且您将能够使用每个服务器中的不同服务器声明配置文件(工作和家庭)。

于 2013-06-24T10:21:01.117 回答
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

于 2018-04-11T17:51:58.033 回答