我正在努力解决这个问题,但仍无法找到任何可接受的解决方案。
问题是我正在使用javax.persistence和eclipselink jar,我告诉maven从这个存储库下载“
http://mirror.cs.rit.edu/mirrors/eclipse/rt/eclipselink/maven.repo
“(我称之为”eclipse repo“),因为这些jar不在中央maven存储库中。所以,maven下载jar,将它们安装在本地存储库中,一切正常。
然后,我将junit版本从3.8.x更改为4.8.x以运行一些测试,这是有趣的开始时间;当我将junit版本更改为4.8.x时,然后maven从远程存储库下载它,<strong>但它总是试图从 eclipse repo 下载新的junit版本,junit jar在maven中央存储库中!。
在此之后,我从项目pom.xml中删除了eclipse存储库,并且maven继续查找并下载新的junit版本, AND ALSO 它再次尝试下载¡ eclipse jars(javax.persistence和eclipselink),但现在来自maven中央存储库,它产生一个漂亮的错误,因为这些文件不存在。现在,我的问题是:
1.-为什么maven试图再次下载eclipselink文件,如果它们在我的本地存储库中(我确定这个)?嗯,更好的是,当我再次在项目pom.xml中写下 eclipse repo 时,maven停止尝试下载eclipselink文件。看起来,eclipselink罐子链接到他们下载的远程存储库,当我删除 eclipse repo 时,maven感觉就像,嘿!这些eclipselink罐子没有从maven中央存储库下载,我没有看到它们从哪里下载,让我们再次下载它们 - 这很有趣下载我已经有的狗屎!!!! - WTF就是这个!!!
2.-为什么maven不在远程存储库中搜索?如果工件不在一个存储库中,它可能在下一个存储库中。
3.-在哪里写了maven central repo,哪个文件?,它不在settings.xml中,它隐藏在其他地方。我正在尝试为maven添加更多的远程回购,但我找不到maven中央回购的位置。我正在使用maven 3。
BTW,我知道我可以手动安装junit jar,但这不是重点。 Maven应该在可用的存储库中搜索它需要的工件,并且还使用已经安装在本地存储库中的工件。
如果有人可以帮助我,我会非常感激。提前谢谢。
根据要求:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>tutorial</groupId>
<artifactId>chapter02</artifactId>
<version>1.0-SNAPSHOT</version>
<name>chapter02</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.4.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<inherited>true</inherited>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>EclipseLink Repo</id>
<url>http://mirror.cs.rit.edu/mirrors/eclipse/rt/eclipselink/maven.repo</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
正如你所看到的,有 eclipse repo ,如果我从pom.xml中删除了这个 eclipse repo ,那么maven开始下载eclipselink jar,已经是在本地存储库中安装。
关于/.m2/settings.xml,我没有这样的文件,我找到的唯一的settings.xml文件是在$ M2_HOME / conf / settings.xml中,并且相信我没有maven中央存储库的踪迹也没有任何其他存储库自己看看:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
</mirrors>
<profiles>
</profiles>
</settings>
有什么难事吗?
答案 0 :(得分:0)
我有许多poms添加回购并且不会失去中心。你可以尝试从全局设置中复制中央仓库的定义,看看是否有帮助。你可以运行mvn -X。您可以询问maven用户列表,该列表具有更高的专业知识。
答案 1 :(得分:0)
使用Repository Manager,而不是使用远程存储库列表。从这里开始:http://nexus.sonatype.org
Maven将检查所有远程存储库,但如果您已经尝试下载无法找到的工件,Maven将缓存404,因此您必须传入-U选项。
这里提出了一些非常基本的问题,如果你用Google搜索了一下,或者即使你在Stack Overflow上进行了一些搜索,你也可以自己回答。