2

私は pom を初めて使用しますが、maven.apache.org の「はじめに」を実行し、このプロジェクトを開始する前に社内の既存のプロジェクトにも言及しました。

情報: Eclipse で jar を参照ライブラリとして指定すると、プロジェクトはスムーズに実行され、問題は発生しません。

問題: リポジトリから依存コードをダウンロードできないため、コンパイル エラーが発生します。

私のプロジェクト構造は[理解しやすいように簡略化されています]

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.IOUtilsmvn 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) 一部の身元を保護するために、機密データへの参照を変更しました。

utils/common/pom.xml [コモンズ モジュール]

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

2 に答える 2

4

commons モジュール<dependencyManagement>のセクションを囲むタグを削除する必要があります。<dependencies>pom.xml

この<dependencyManagement>セクションでは、バージョン番号などの依存関係情報を親 pom に指定して (既に行ったように)、子 pom の依存関係を簡素化できます。ただし、その子に必要<dependencies>依存関係を指定するセクションが必要です。

于 2013-07-02T22:01:36.027 に答える
1

pom.xml使用中

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

削除またはコメント<exclusions>して、<exclusion>

于 2016-02-16T09:52:42.720 に答える