通常,我在Maven settings.xml
<mirror>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*</mirrorOf>
</mirror>
我的理解是这个镜像阻止Maven从互联网上下载依赖项,即它只会在这个内部存储库中查找它们。
但是,每当我想要添加一个不在此内部存储库中的依赖项时,我必须注释掉上面的文本并将以下内容添加到项目pom.xml
<repository>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
</repository>
当我进行这些更改时,Maven将检查本地仓库中的依赖项,如果没有找到,则将它们从Internet下载到本地仓库。一旦我拥有了我需要的依赖项,我就会改回配置。
有没有办法获得我想要的行为 - 总是检查内部仓库,然后检查公共(互联网)回购 - 而不必将<repository>
添加到每个项目的pom.xml
?
理想情况下,我想在settings.xml
中指定此存储库一次,但似乎您只能在那里配置镜像。
答案 0 :(得分:14)
您可以尝试将maven配置为仅将镜像用于中央存储库,或者排除由某个ID标识的存储库。
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>central</mirrorOf>
</mirror>
或者
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*,!internal-repository</mirrorOf>
</mirror>
答案 1 :(得分:2)
这个问题很老了,但无论如何:
在您的settings.xml中放置<profile>
,使用<repository>
元素指定内部存储库
...
<profile>
<id>devel-repos</id>
<repositories>
<repository>
<id>repo-release</id>
<url>http://repohost:repoport/path/to/release/repo</url>
</repository>
<repository>
<id>repo-snapshot</id>
<url>http://repohost:repoport/path/to/snapshot/repo</url>
</repository>
</repositories>
</profile>
...
然后将上述个人资料设为<activeProfile>
。这将激活每个maven调用的配置文件。
...
<activeProfiles>
<activeProfile>devel-repos</activeProfile>
</activeProfiles>
...
这不会避免多个存储库定义,但它会为您提供最重要的事情:所有内容都集中在settings.xml
中,而您的pom.xml
是干净的(并且可移植)。
答案 2 :(得分:1)
看起来您可能没有正确配置或使用镜像。
理想情况下,您指定为镜像的应该是repository manager,它应该透明地从Internet中的各个存储库下载请求的依赖项并对其进行缓存,从而允许后续下载从镜像发生。
答案 3 :(得分:0)
将存储库部分添加到超级pom。让所有项目从超级pom扩展。
所以每个其他项目的pom都会有一个父节从这样的超级pom扩展。
<parent>
<groupId>com.ddd.ddd.ddd</groupId>
<artifactId>ddd-ddd-parent</artifactId>
<version>1.1.1-SNAPSHOT</version>
<relativePath>./config/superpom/pom.xml</relativePath>
</parent>
这样你就可以将存储库部分只放在一个pom文件中,这就是你的超级pom。你还可以在这里添加所有项目共有的依赖项,比如junit,log4j和类似的东西。
在settings.xml文件中。您可以添加它来配置本地存储库。
<localRepository>C:/myBox/maven.repo</localRepository>
答案 4 :(得分:0)
从settings.xml
删除镜像设置,并将以下代码用于我。
<profiles>
<profile>
<id>profile-1</id>
<repositories>
<repository>
<id>internal-repository-1</id>
<url>http://build.idaho.local/wtp_repository</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>profile-1</activeProfile>
</activeProfiles>