web-dev-qa-db-ja.com

MavenError:プロジェクトで目標を実行できませんでした:Mavenマルチモジュールプロジェクトの依存関係を解決できませんでした

Mavenマルチモジュールプロジェクトを作成しようとしています。プロジェクトは正常に作成されますが、あるモジュールを別のモジュールの依存関係として使用しようとすると、例外が生成されます。 Eclipseを使用してモジュールを作成するとき、jarとしてパッケージ化を選択しましたが、モジュールを作成するとき、子pom.xmlでパッケージ化タグが言及されず、jarとしてパッケージ化タグを手動で挿入しました。以下は私の親pom.xmlです:

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
-------------------------
<modules>
    <module>empirecl-web</module>
    <module>empirecl-dao</module>
    <module>empirecl-service</module>
    <module>empirecl-api</module>
</modules>

Dao子モジュール:

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.netsol</groupId>
    <artifactId>empirecl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-dao</artifactId>
<packaging>jar</packaging>
<name>empirecl-dao</name>
------------------------

サービス子モジュール:

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.netsol</groupId>
    <artifactId>empirecl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-service</artifactId>
<packaging>jar</packaging>
<name>empirecl-service</name>

<dependencies>
    <dependency>
        <groupId>com.netsol</groupId>
        <artifactId>empirecl-dao</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
------------------------------------------

DaoモジュールのMavenは正常にクリーンおよびインストールされますが、サービスモジュールを使用しようとすると、次の例外が生成されます。

[ERROR] Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Could not find artifact com.netsol:empirecl:pom:0.0.1-SNAPSHOT -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT

ウェブから解決策を見つけようとしていますが、それでも解決策が見つかりません。 EclipseでDependency Hierarchyのサービスモジュールを開くと、DAOモジュールがjarではなくフォルダーとして表示されました。以下は、サービスモジュールのDependency Hierarchyのスクリーンショットです。

enter image description here

26

誰かがこれに戻ってきた場合、ここでの問題は親pomを最初にインストールできなかったと思うので、これらすべてのサブモジュールが依存しているため、 Maven Reactor はサブモジュール。

ルートディレクトリから(ここでD:\luna_workspace\empire_club\empirecl)おそらく次のものが必要です。

mvn clean install

(脇:<relativePath>../pom.xml</relativePath>は、 デフォルト値 )なので実際には必要ありません。

25
declension

私の場合、競合するjarとpomのパッケージ化を忘れていました。書くのを忘れた

<packaging>pom</packaging>

すべての子pom.xmlファイルで

2
Sultan1991

私の解決策は、artifaktIdversionの間に挿入することでした

<groupId>com.onlinechat</groupId>
<artifactId>chat-online</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>server</module>
    <module>client</module>
    <module>network</module>
</modules>
0
WounderGrifft