在maven构建期间[mvn-install]依赖项未从存储库下载



我是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中的存储库详细信息

我仍然得到同样的错误,构建没有进一步移动。

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

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

在某种程度上,我遗漏了什么导致无法从存储库下载?提前谢谢。如有任何帮助,我们将不胜感激。

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

utils/common/pom.xml[commons模块]

....
<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>  
...

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

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

pom.xml中使用

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

删除或注释<exclusions><exclusion>

相关内容

  • 没有找到相关文章

最新更新