通常,我在Maven中配置了以下镜像 settings.xml
<mirror>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)
我的理解是这个镜像阻止了Maven从互联网上下载依赖关系,即它只会在这个内部存储库中查找它们.
但是,每当我想要添加不在此内部存储库中的依赖项时,我必须注释掉上面的文本并将以下内容添加到项目中 pom.xml
<repository>
<id>internal-repository</id>
<url>http://build.idaho.local/wtp_repository</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
当我进行这些更改时,Maven将检查本地仓库中的依赖项,如果没有找到,则将它们从Internet下载到本地仓库.一旦我拥有了我需要的依赖项,我就会改回配置.
有没有办法获得我想要的行为 - 总是检查内部仓库,然后检查公共(互联网)回购 - 而不必添加<repository>到每个项目的pom.xml?
理想情况下,我想在settings.xml此处指定此存储库,但似乎您只能在那里配置镜像.
Jör*_*ann 14
您可以尝试将maven配置为仅将镜像用于中央存储库,或者排除由某个ID标识的存储库.
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>central</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)
要么
<mirror>
<id>internal-mirror</id>
<url>http://build.idaho.local/wtp_repository</url>
<mirrorOf>*,!internal-repository</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)
将存储库部分添加到 super pom.xml 中。并让所有的项目都从super 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>
Run Code Online (Sandbox Code Playgroud)
这样你就可以只在一个 pom 文件中包含存储库部分,这就是你的超级 pom。您还可以在此处添加所有项目共有的任何依赖项,例如 junit、log4j 等。
在您的 settings.xml 文件中。您可以添加它来配置您的本地存储库。
<localRepository>C:/myBox/maven.repo</localRepository>
Run Code Online (Sandbox Code Playgroud)