首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置maven忽略POM文件中指定的存储库?

如何配置maven忽略POM文件中指定的存储库?
EN

Stack Overflow用户
提问于 2013-12-11 03:47:46
回答 2查看 9.5K关注 0票数 10

我在公司内部网上有一个项目(只读-禁止外部互联网访问)。我有一个运行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文件中指定的存储库加载剩余的依赖项,而不是从Artifactory加载。这会破坏构建。如何配置maven忽略POM文件中指定的存储库?

谢谢,

内森

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-11 21:40:34

作为一种变通办法,在您的settings.xml中使用相同的ID定义另一个存储库(它是在jetty-parent:19中定义的oss.sonatype.org吗,这就是问题所在?)并将其指向您的回购。Maven将使用该定义来支持pom中的定义。

有一个针对Maven (MNG-3056)的公开问题,允许对此进行配置,以便只使用您的存储库;一般来说,如果您有一个本地存储库,这将是您想要的行为。

票数 6
EN

Stack Overflow用户

发布于 2015-11-26 18:48:53

这是个很好的回答乔。谢谢。我已经找了很长时间了。

我只是举了一个例子,在这个例子中,我和内森有同样的问题。

我使用的是Maven企业存储库(Nexus或Artifactory),而且我使用代理服务器,这意味着除了我自己的存储库之外,我不能直接(也不想)从任何其他存储库下载。

Jasper报告说,net.sf.jasperreports:jasperreports:6.2.0在其pom中定义了几个存储库。

代码语言:javascript
复制
<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>

这会导致以下异常:

代码语言:javascript
复制
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: 

乔所描述的解决方案是:在全局安装(C:/maven- settings.xml /conf/ settings.xml )或私有settings.xml (~/.m2/settings.xml)中添加以下配置文件:

代码语言:javascript
复制
<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>

重要提示:配置文件(jasperreports、jaspersoft-第三方)中的存储库id与pom.xml中使用的存储库id完全匹配-在本例中为pom.xml。

不要忘记将“外部”存储库添加到您的Maven Enterprise Repository的“代理”列表中

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20503829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档