2

A、B、C の 3 つの Java コンソール アプリケーションがあり、すべて Maven で管理されています。アプリケーション A には共通のツール クラスが含まれており、これらのツールは別の 2 つのアプリケーション (B と C) で使用されています。この依存関係を Maven で解決する方法を知る必要があります。

考えがあります - 間違っている場合は修正してください。mvn installコマンドを使用してアプリケーション A をローカルの Maven リポジトリにパッケージ化してインストールし、このライブラリをファイル内のアプリ B と C の新しい依存関係として設定しpom.xmlます。

これは良い考えですか、それともこの問題を解決するためのより良い方法はありますか?

この質問は私の問題に関連しているようですが、私の状況でそれが良い解決策であるかどうかを判断することはできません -プロジェクトを別のプロジェクトの依存関係として追加するにはどうすればよいですか?

4

3 に答える 3

2

はい、全然大丈夫です。このソリューションはスケーリングも可能です。後でアーティファクトをリモート リポジトリや Maven Central にインストールすることもできます。

他のオプションとして、これらの 3 つのプロジェクトを共通の親 POM の下にモジュールとして配置し、パッケージングを に設定する方法がありpomます。利点は、1 つのコマンドで 3 つのアーティファクトすべてをインストールできることです。つまり、Maven Release プラグインを使用すると、オンザフライで依存関係を更新できます。

于 2013-11-13T20:45:16.747 に答える
1

はい、これはこの問題を解決する正しい方法のようです。または、実際のリポジトリにデプロイすることもできます。最初に A をインストールせずに、他の人にプロジェクト B と C をビルドしてもらいたい場合は、さらに良いでしょう。

B と C が使用するコードを独自の別の jar に入れます。そうすれば、B と C はプロジェクト A のすべてを使用するのではなく、必要なコードを含むライブラリだけを使用します。

リンクされた記事のアドバイスは使用しません。絶対パスが必要なため理想的ではないシステムパスを使用しているため、誰かがファイルシステムの同じ場所にプロジェクトをインストールした場合にのみ機能します。

于 2013-11-13T20:43:23.737 に答える
0

実行mvn installすると問題は解決しますが、手動で解決することになります。プロジェクトが変更されると、多くの複雑さが生じます。必要なのは、サブ プロジェクトへの参照を作成する 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>X</groupId>
  <artifactId>X</artifactId>
  <version>0.1</version>
  <name>X</name>

  <packaging>pom</packaging>

  <modules>
    <module>project_A</module>
    <module>project_B</module>
    <module>project_C</module>
  </modules>

  <build>

    <defaultGoal>package</defaultGoal>

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.3</version>
          <configuration>
            <descriptors>
              <descriptor>src/assemble/bin.xml</descriptor>
            </descriptors>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

  </build>

</project>

これを、各プロジェクトがある 3 つのディレクトリを含むディレクトリに配置します。次に、このディレクトリを呼び出すmvn clean packageと、Maven が魔法のように問題を解決し、各プロジェクトを正しい順序でビルドし、依存関係がある場合は 1 つのプロジェクトを他のプロジェクトで使用できるようにします。

ボーナス: 上記の例では、すべてのプロジェクトを単一のディストリビューションにパックするために使用できる Maven Assemble への参照も追加しています。

于 2013-11-13T20:49:58.407 に答える