3

A と B の 2 つのプロジェクトがあります。B は lib プロジェクトであり、A は B への参照です。B に新しい関数を追加すると、B で実行しても問題ありませんが、新しいからシンボルが見つからないため、Amvn installで失敗しました。 mvn installB.

プロジェクト B には正しくインストールしたと確信していますが、なぜ A はまだコンパイルとインストールに失敗したのでしょうか?

これは A の pom.xml です。

<dependency>
    <groupId>A and B's group</groupId>
    <artifactId>B</artifactId>
    <scope>provided</scope>     
</dependency>

どんな手掛かり?ありがとう

4

3 に答える 3

1

次のようなマルチモジュール ビルドを作成することをお勧めします。

+-- root
      +-- pom.xml
      +-- module-A
      +-- module-B

ルート pom では、このようにモジュールを定義し、パッケージングをpomに定義する必要があります。

<modules>
  <module>module-A</module>
  <module>module-B</module>
</modules>

さらに、次のようにして、module-A から module -B への依存関係を簡単に定義できます。

<project ..
  <parent>
     <groupId>project.parent</groupId>
     <artifactId>parent</artifactId>
     <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>module-A</artifactId>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>module-B</artifactId>
      <version>${project.version}</version>
    </dependency>
    ..
  </dependencies>
  ..
</project>

このセットアップでは、ルート フォルダーからすべてのモジュールを簡単にビルドできます。

mvn clean package

または、その構造を Eclipse (m2e がインストールされていますか?) または IntelliJ や Netbeans などの他の IDE にインポートできます。

于 2012-12-31T11:04:57.747 に答える
0

mvn clean installA の完全に新しいビルドを実行するか、mvn -U installMaven に更新されたスナップショットを探すように強制してください。あなたの環境はまだ古い JAR を使用しているようです。この説明からセットアップが何であるかを伝えるのは難しいです.Bをローカルリポジトリに正しくインストールしているように聞こえますが、IDEも同様に「役立つ」ようにしようとしているかどうかはわかりません.

于 2012-12-31T03:55:31.273 に答える
0

<version>プロジェクトの宣言と依存関係の宣言に要素を含めることができます。

  • Maven コマンドラインからバージョン変数を渡します。例えば:${build.version}

モジュール A pom.xml:

<groupId>A & B's Group ID</groupId>
<artifactId>A</artifactId>
<version>${build.version}</version>

<dependencies>
    <dependency>
        <groupId>A & B's Group ID</groupId>
        <artifactId>B</artifactId>
        <version>${build.version}</version>
        <type>war</type>
        <scope>provided</scope>
    </dependency>   
...

そのため、プロジェクト B がビルドおよびインストールされるたびに、その特定のバージョンのローカル Maven リポジトリで依存関係が利用可能になり、プロジェクト A によって選択されます。

于 2012-12-31T07:21:20.873 に答える