0

プロジェクト内のすべてのJavaパッケージ用のjarをビルドすることは可能ですか?

たとえば、私のパッケージはcom.mypackage.foo, com.mypackage.bar両方とも1つのプロジェクトに含まれています。foo.jarとbar.jarを取得するためにMavenビルドを開始できますか?

助けてくれてありがとう4。

編集:さて、私がそれを求めている理由について、もう少し情報が必要だと思います。私は2つの部分(ライブラリとデーモン)に分割されたプロジェクトを持っており、両方の部分は互いに独立して実行可能でなければならないので、それぞれの部分に独自のjarを使用したいと思います。私はあなたの何人かが提案したようにモジュールとして2つの部分を含む「親プロジェクト」について考えていました(それはより良い方法ですか?)。次のポイントは、プロジェクト全体をコミットしたいという点で、gitリポジトリが1つしかないということです。モジュールプロジェクトのコンテンツを親プロジェクトのように配置src/lib/javaすることは可能ですか、それともどのように行う必要がありますか?

4

3 に答える 3

2

Mavenの規則に準拠するために、すべてのパッケージのプロジェクトを作成します。簡単な質問ですが、なぜそれを行う必要があるのですか?

于 2012-11-30T10:15:59.763 に答える
2

Maven jarプラグインは、クラスを含めたり除外したりするように構成できます。したがって、1つのパッケージからすべてのクラスをパッケージ化するのは簡単です。

     <includes>
        <include>com/example/foo/*</include>
      </includes>
      <excludes>
        <exclude>com/example/foo/subfoo1/**</exclude>
        <exclude>com/example/foo/subfoo2/**</exclude>
        <!-- to exclude all packages that start with com.example.foo -->
      </excludes>

ただし、パッケージごとにpomファイルを作成する必要があります...これらすべてのモジュールを実行する追加のマルチモジュールpomで作成でき、小さなJavaプログラムでpomファイルを自動生成することもできます。ただし、事前にjarファイルに入るすべてのパッケージを自動検出することは非常に困難です。


Maven AntRunプラグインを使用して、各パッケージのjarタスク<target>を呼び出すを定義する方が簡単な場合があります。


マルチモジュール構造は次のようになります。

./
 pom.xml
 project/
        src/...
        target/...
        pom1.xml
        pom2.xml
        pom3.xml

私の理解では、すべてのJavaパッケージが同じプロジェクトに存在します。パッケージが異なるプロジェクトにある場合は、それらを異なるjarにパッケージ化するのに問題はありません。これがデフォルトの動作です。

于 2012-11-30T10:20:38.643 に答える
0

Mavenの規則では、モジュールのjarを作成します。つまり、の内容からjarを作成しsrc/main/javaます。すべてのパッケージからjarを作成する必要がある場合は、少し奇妙に聞こえます。このようなことはできますが、後で問題が発生する可能性があるため、これはお勧めしません。これは、Mavenから開始する一種の戦いであり、最終的には敗北します。

maven-jar-pluginを設定する必要があります:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <excludes>
            <exclude>...</exclude>
          </excludes>
          <includes>
            <include>com/mypackage/foo/**</include>
          </includes>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
于 2012-11-30T10:13:19.717 に答える