我正在使用我自己版本的本地计算机上安装的Nexus Web应用程序存储库。我让Nexus只配置了一个存储库,即我存储快照的存储库:
http://localhost:8081/nexus/content/repositories/MySnapshots/
请注意,在安装Nexus后,我删除了所有默认存储库并添加了我自己的存储库。 (也许这是一个坏主意?)
当我进行mvn clean安装时,我注意到一些第三方工件直接从远程存储库下载。例如,以下是构建中的一个输出行:
Downloading: http://repo.maven.apache.org/maven2/com/sun/org/apache/xml/internal/resolver/...
奇怪的是,我看到其他工件正在通过我的本地Nexus最终进入工件:
Downloading: http://localhost:8081/nexus/content/repositories/MySnapshots/org/apache/maven/wagon/wagon-provider-api...
请注意下载网址的第一部分是我的本地存储库,但 MySnapshots 之后的所有内容都来自apache.org。
这几乎就像我的Nexus存储库就像maven.apache.org的代理一样,用于一些工件下载,但对于其他人来说,它直接到源。
谁能告诉我为什么会这样?
如果我的所有构建都一直成功,我不会为此烦恼,但有时,当我编译大型项目时,由于无法找到工件而导致构建失败。
例如,当我尝试构建另一个依赖于eclipse jdt的项目时,我收到以下错误:
Downloading: http://localhost:8081/nexus/content/repositories/MySnapshots/eclipse/jdt/core/eclipse.jdt.core
Could not find artifact eclipse.jdt.core:eclipse.jdt.core
我不确定这是否意味着我的Nexus配置不正确或者是否真的没有神器eclipse.jdt.com。如果下载没有通过我的本地Nexus存储库,那么我将调查pom / settings.xml文件。相反,这让我想知道这是否是由于我的Nexus配置。
如果您希望在我看到这个时看到我正在构建的项目的Maven和我的pom文件的settings.xml,您可以在这里查看它们:
settings.xml:http://pastebin.com/NvLr5bEA
pom.xml:http://pastebin.com/PJ0P3RaK
答案 0 :(得分:2)
如果您像往常一样使用本地nexus作为代理,则需要像这样配置settings.xml:
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
棘手的是镜像的东西,它重新路由了对配置的nexus实例的每次调用。 你提到的像eclipse部分的东西可能会有问题,因为只有少数工件可以通过maven central获得。此外,您应该保留maven central,release repository和snapshots repository等默认值,因为这些是您需要的存储库。
答案 1 :(得分:0)
我不认为它是代理问题,直到我从Maven Central Repo下载的第一个案例的理解,你的nexus存储库中可能没有相同的工件,这就是为什么它会Maven Central Repo。
在第二种情况下,它可以在您的nexus中使用,因此反应堆没有尝试从Maven Central Repo下载它。