などのコマンドを実行する場合
mvn dependency:build-classpath
または
mvn exec:Java
Mavenは、あるモジュールの別のモジュールへの依存関係を解決できません。
[エラー]プロジェクトparser-appで目標を実行できませんでした:プロジェクトproject_group:A:jar:0.1-SNAPSHOTの依存関係を解決できませんでした:アーティファクトproject_group:B:jar:0.1-SNAPSHOTが見つかりませんでした
プロジェクトの構造は次のとおりです。
/pom.xml
/A/pom.xml
/B/pom.xml
親pomは次のとおりです。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project_group</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.1-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>A</module>
<module>B</module>
</modules>
最初の子モジュール(依存関係の解決に失敗したモジュール):
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<dependencies>
<dependency>
<groupId>parent_group</groupId>
<artifactId>B</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
2番目の子モジュール(依存関係):
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<name>B</name>
プロジェクトでmvn clean install
を少なくとも1回実行して、ローカルリポジトリ内に依存関係をインストールしましたか?
Mavenリアクターはそのように奇妙で、特定のタスクのためだけにモジュールを保持します。 1つのサブプロジェクトに対してのみ何かを行うビルドターゲットを実行する場合、Mavenが最初に依存関係をビルドしても、リアクター内にそれらを保持しません(時々)。
ローカルリポジトリへのインストールは回避策ですが、恐ろしいものであり、可能な場合は避けるべきです。古いビルドの結果になりやすいからです。
少しlessい回避策は、2つのビルドターゲットを結合することです。2番目のビルドターゲットは無害な処理を行いますが、すべてのサブプロジェクトでリアクターへの追加をトリガーします。
例として、必要なタスクを「コンパイル」または「パッケージ」タスクと組み合わせることができます。