我在公司内部网上有一个项目(阅读 - 没有外部互联网访问)。我有一台运行Artifactory的服务器,其中包含所有必需的maven工件。我有一个settings.xml文件,指向maven到正在运行的Artifactory服务器。一切都很开心,maven可以下载依赖项,直到在POM文件中指定存储库的工件(在我的案例中为org / eclipse / jetty / jetty-project / 7.5.4.v20111024 / jetty-project-7.5.4.v20111024.pom) 。然后maven尝试从POM文件中指定的repo而不是Artifactory中加载剩余的依赖项。这打破了构建。如何配置maven以忽略POM文件中指定的存储库?
谢谢,
森
答案 0 :(得分:4)
作为一种解决方法,在settings.xml
中使用相同的ID定义另一个存储库(oss.sonatype.org
,在jetty-parent:19
中定义,这是问题吗?)并将其指向您的存储库。 Maven将使用该定义来支持pom中的那个。
针对Maven(MNG-3056)提出了一个未解决的问题,允许对其进行配置,以便只使用您的仓库;一般来说,如果你有一个本地存储库,那就是你想要的行为。
答案 1 :(得分:3)
这是一个很好的答案乔。谢谢。我很长一段时间都在寻找它。
我只举一个例子,其中我和Nathan有同样的问题。
我使用Maven企业存储库(Nexus或Artifactory)并且我在代理之后,这意味着我无法直接(并且不希望)从我的任何其他存储库下载。
Jasper报告net.sf.jasperreports:jasperreports:6.2.0在其pom中定义了几个存储库。
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.2.0</version>
...
<repositories>
<repository>
<id>jasperreports</id>
<url>http://jasperreports.sourceforge.net/maven2</url>
</repository>
<repository>
<id>jaspersoft-third-party</id>
<url>http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/</url>
</repository>
</repositories>
这会导致以下异常:
C:\my-project>mvn verify
[INFO] Scanning for projects...
[INFO] Building my-project 1.0.0-SNAPSHOT
[INFO]
Downloading: http://mynexus/nexus/content/groups/ch-public/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
Downloading: http://jasperreports.sourceforge.net/maven2/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
Downloading: http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
[INFO] BUILD FAILURE
[INFO] Could not resolve dependencies for project ... :
Failed to collect dependencies at net.sf.jasperreports:jasperreports:jar:6.2.0 ->
com.lowagie:itext:jar:2.1.7.js4: Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js4:
Could not transfer artifact com.lowagie:itext:pom:2.1.7.js4
from/to jasperreports (http://jasperreports.sourceforge.net/maven2):
Connect to jasperreports.sourceforge.net:80 [jasperreports.sourceforge.net/216.34.181.96]
failed: Connection timed out:
Joe描述的解决方案是: 在global settings.xml(C:/maven-installation/conf/settings.xml)或private settings.xml(〜/ .m2 / settings.xml)中添加以下配置文件:
<profiles>
<profile>
<id>ignore-repositories</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<repositories>
<repository>
<id>jasperreports</id>
<url>http://mynexus/nexus/content/groups/ch-public/
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jaspersoft-third-party</id>
<url>http://mynexus/nexus/content/groups/ch-public/
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
重要:配置文件中的存储库ID(jasperreports,jaspersoft-third-party)与pom.xml中使用的存储库的ID完全匹配 - 在本例中为net的pom.xml。 sf.jasperreports:jasperreports:6.2.0
不要忘记添加&#34;外部&#34;存储库到&#34;代理&#34;您的Maven企业存储库列表