在我的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插件不使用默认配置文件或特定配置文件。 另外:如何更改项目的镜像?
答案 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
中定义镜像。这实际上与能够在镜像中放置镜像相同。