在maven build [mvn install]依赖关系中没有从存储库下载

时间:2013-07-02 20:49:57

标签: java eclipse maven pom.xml parent-pom

我是pom的新手,但在maven.apache.org上经历了“入门”,并在我开始这个项目之前也参考了公司内部的现有项目。

的信息: 如果我在eclipse中将jar指定为引用的libs,则项目运行顺畅,不会出现任何问题。

问题:编译错误,因为无法从存储库下载相关代码。

我的项目结构[为了便于理解而简化]

utils

utils/commons [源于src / main / java风格] [使用包org.apache.commons.io.IOUtils]

utils/commons/pom.xml

utils/pom.xml [父母]

现在我开始使用commons文件夹将pom.xml写为唯一的模块,并且不引用任何父/其他模块。 在我运行mvn install之后,它出现了错误

ToolUtils.java:[17,28] error: package org.apache.commons.io does not exist
ToolUtils.java:[18,23] error: package org.apache.log4j does not exist

如果我评论了使用org.apache.commons.io.IOUtils的代码,那么mvn install可以正常工作并生成一个jar。 我查了一下网,发现问题是找不到存储库,所以我更新了引用 到父pom.xml。 还包括父pom.xml中的存储库详细信息。 [直接在utils文件夹下]

我仍然遇到同样的错误,而且构建不会进一步发展。

ToolUtils.java:[17,28] error: package org.apache.commons.io does not exist
ToolUtils.java:[18,23] error: package org.apache.log4j does not exist

我正在使用内部网址,我已在broswer中手动验证。 此外,我已验证代理详细信息是正确的,因为另一个旧项目引用相同的URL并正在正确构建。 [不幸的是,该项目过于复杂,无法复制粘贴pom.xml并进行修改, 因此从头开始编写pom.xml。]

可以指出我遗失的是什么导致无法从存储库下载? 提前致谢。 任何帮助都将深表感谢。

注意: 1)我从2个不同的pom.xml粘贴其目录名称的片段,以便于识别。可根据要求提供附件。 2)我修改了对机密数据的引用,以保护一些身份。

utils / common / pom.xml [commons module]

....
<parent>
    <groupId>com.osg.rtos</groupId>
    <artifactId>rxutils</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
....
    <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>            
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-commons-service</artifactId>
            <version>${rtos.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

utils / pom.xml [parent]

....
<groupId>com.osg.rtos</groupId>
<artifactId>rxutils</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>rxutils</name>
<packaging>pom</packaging>  


<repositories>
    <repository>
        <id>release</id>
        <url>http://internal.com/~devbuild/repository</url>         
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-commons-service</artifactId>
            <version>${rtos.version}</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-data</artifactId>
            <version>${rtos.version}</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-exception</artifactId>
            <version>${rtos.version}</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-mailbox-service</artifactId>
            <version>${rtos.version}</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-message-service</artifactId>
            <version>${rtos.version}</version>
        </dependency>
        <dependency>
            <groupId>com.osg.rtos</groupId>
            <artifactId>rtos-rest</artifactId>
            <version>${rtos.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<modules>
    <module>commons</module>        
    <module>rxutils</module>        
    <module>tool</module>        
</modules>  
...

2 个答案:

答案 0 :(得分:4)

您需要删除公共模块<dependencyManagement><dependencies>部分周围的pom.xml标记。

<dependencyManagement>部分允许您在父pom中指定依赖关系信息(例如版本号)(如您所做),以便您可以简化子poms中的依赖关系。但是,您仍需要<dependencies>部分来指定该子项所需的依赖项。

答案 1 :(得分:0)

pom.xml中使用

<dependency> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

删除或评论<exclusions><exclusion>