如何在maven设置中禁用镜像存储库

时间:2011-02-09 08:36:39

标签: maven maven-plugin

在我的maven~。/。m2 / settings.xml中我定义了一个镜像和一些存储库:

 <mirrors>
    <mirror>
    <id>someid</id>
        .....
    </mirro>
 </mirrors>
...

<profiles>
    <profile>
         <id>default</id>
            <activation>
                     <activeByDefault>true</activeByDefault>
                 </activation>
                 <repositories>
            <repository>                                                                    <id>repo....</id>
....

         </profile>
</profiles>

这很好用。

有些项目我想要禁用镜像和默认配置文件。 我知道我可以为存储库定义一个单独的配置文件,但我不知道如何告诉maven eclipse插件不使用默认配置文件或特定配置文件。 另外:如何更改项目的镜像?

4 个答案:

答案 0 :(得分:9)

不幸的是,使用单个settings.xml是不可能的。在Maven JIRA有特征要求,投票给这个!

解决方法是使用两个settings.xml并运行具有所选配置的maven:

mvn -s my-settings.xml

答案 1 :(得分:2)

复制settings.xml文件,删除mirror条目并告诉maven使用--settings 文件命令行选项。

使用XSLT或XMLStarlet之类的命令行工具自动完成此过程:

xmlstarlet ed -N 's=http://maven.apache.org/SETTINGS/1.0.0' --delete "//s:mirror" settings.xml

将新的settings.xml文件打印到stdout,但不包含任何镜像设置。

答案 2 :(得分:1)

settings.xml中的条目适用于系统上的所有maven项目,因此不适合单个项目。

如果您希望不同的项目具有不同的profiles,那么您应该在项目的pom中指定它们。您无需在<profiles>中添加~/m2/settings.xml部分。

至于<mirrors>,它们适用于您要镜像的repositories。您可以选择需要镜像的存储库,但不能选择哪些项目应该使用镜像,哪些不应该使用镜像。如果您不希望从远程存储库下载项目,则可以始终以offline模式运行项目。

答案 3 :(得分:0)

我认为不需要多个settings.xml来执行此操作。

可以使用配置文件控制镜像。

我可以使用我的存储库id的属性,例如后缀${repo-suffix}

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3
  <distributionManagement>
    <repository>
      <id>deployment${repo-suffix}</id>
      <name>Internal Releases</name>

然后我可以将repo-suffix添加到个人资料中,例如为其赋予值-1

<profile>
  <id>my-profile</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
    <properties>
      <repo-suffix>-1</repo-suffix>
      ...

这样我现在在pom文件中有一个动态定义的存储库ID。

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3
  <distributionManagement>
    <repository>
      <id>deployment-1</id>
      <name>Internal Releases</name>

对于这个deployment-1存储库,我可以在settings.xml中定义镜像。这实际上与能够在镜像中放置镜像相同。