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

标签 java eclipse maven pom.xml parent-pom

我是 pom 新手,但在开始这个项目之前,我在 maven.apache.org 上浏览了“入门”,并且还引用了公司内的一个现有项目。

信息: 如果我将 jar 指定为 eclipse 中引用的库,则项目运行顺利并且没有观察到任何问题。

问题:由于无法从存储库下载依赖代码而出现编译错误。

我的项目结构是[简化以便于理解]

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

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

可以指出我缺少什么导致无法从存储库下载吗? 提前致谢。 任何帮助将不胜感激。

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

utils/common/pom.xml [公共(public)模块]

....
<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 [父]

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

最佳答案

您需要删除 <dependencyManagement>围绕 <dependencies> 的标签公共(public)模块中的部分 pom.xml

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

关于java - 在 Maven 构建 [mvn install] 期间,未从存储库下载依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17435643/

相关文章:

android - Braintree Android Eclipse ADT中的Gradle入门

java - while 循环的问题

java - 避免使用多重拆分方法

java - Eclipse 插件控制台产品

maven - 在maven构建期间构建HTML页面

java - maven 无法解决对 google firebase 的依赖关系

maven-2 - Maven 中的新内容 : Using the shade plugin and 3rd party jars

java - Hibernate 期望 HQL 中的参数类型错误

Java(安卓): calling a function from Context without cast

c++ - Eclipse:GNU 工具链 - 使用 g++ 编译的 C 文件,重复 GNU C