如何使m2e(eclipse的maven集成)知道在哪里找到依赖项?

时间:2011-12-04 10:28:23

标签: java eclipse maven

在STS(Springsource工具套件)中工作时,打开pom.xml文件并检查“依赖项选项卡”中的依赖项,添加/选择maven依赖项将找到0结果。我们需要编辑pom.xml来手动添加依赖项。有没有办法让M2E知道在哪里检查存储库以搜索依赖?

2 个答案:

答案 0 :(得分:3)

默认情况下,所有 pom.xml 都会自动扩展Super POM,它位于maven_installation_folder/lib/maven-x.x.x-uber.jar ==>包org.apache.maven.project ==> pom-4.0.0.xml 。 Super POM中指定的所有配置都由您为项目创建的POM继承。

如果您打开 pom-4.0.0.xml ,您会发现此处定义了maven中央存储库http://repo1.maven.org/maven2/。这意味着如果您在 pom.xml 中指定<dependency>,maven将尝试按以下顺序下载此依赖项:

  1. Maven本地存储库(即您的本地硬盘)
  2. 超级POM中指定的Maven中央存储库(即http://repo1.maven.org/maven2/
  3. Maven远程存储库(在 pom.xml <repository>部分中定义)
  4. 通常,我会使用一些maven存储库搜索引擎(例如this)来查找我想要使用的库/框架/工具的<dependency>,然后将它们粘贴到<强>的pom.xml

    如果Maven中央存储库中存在依赖关系,一切都会正常,并将下载到本地存储库。但是,如果无法从Maven中央存储库中找到并下载某些<dependency>(例如Hibernate),您可以尝试访问其官方站点以查找其存储库链接并将其粘贴到<repository> pom.xml 的一部分。例如,Hibernate要求在pom.xml中定义jboss存储库,如下所示:

    <repositories>
            <repository>
                <id>repository.jboss.org</id>
                <name>JBoss Repository</name>
                <url>http://repository.jboss.org/nexus/content/groups/public-jboss</url>
               <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>     
            </repository>        
     </repositories>
    

    您可以参考this了解<repository>

    的使用情况

答案 1 :(得分:2)

默认情况下,M2e会在maven中央存储库中搜索工件。它下载一个包含工件详细信息的索引文件。您可以通过在 settings.xml 文件的存储库部分中指定相同的存储库来配置其他存储库。请注意,某些存储库没有此索引文件。