Maven中的几个远程存储库

时间:2011-05-23 22:38:42

标签: process build maven repository

我正在努力解决这个问题,但仍无法找到任何可接受的解决方案。

问题是我正在使用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>

有什么难事吗?

2 个答案:

答案 0 :(得分:0)

我有许多poms添加回购并且不会失去中心。你可以尝试从全局设置中复制中央仓库的定义,看看是否有帮助。你可以运行mvn -X。您可以询问maven用户列表,该列表具有更高的专业知识。

答案 1 :(得分:0)

使用Repository Manager,而不是使用远程存储库列表。从这里开始:http://nexus.sonatype.org

Maven将检查所有远程存储库,但如果您已经尝试下载无法找到的工件,Maven将缓存404,因此您必须传入-U选项。

这里提出了一些非常基本的问题,如果你用Google搜索了一下,或者即使你在Stack Overflow上进行了一些搜索,你也可以自己回答。