0

Maven と Gradle が同じ柔軟性を提供して、プロジェクトごとに複数のソース フォルダーの複数の jar ファイルを生成できるかどうかを調査する必要があります。

これが一般的に推奨されないことはわかっていますが、この要件に関しては、2 つのビルド ツールの機能/柔軟性を比較する必要があります (マルチモジュール Maven プロジェクト構造は現在オプションではありません)。

グラドル

Gradle では、これは非常に単純です。

sourceSets {
  main {
    java {
      srcDir 'src'
    }
  }
  other {
    java {
      srcDir 'other'
    }
  }
}
task otherJar(type: Jar) {
    from sourceSets.other.output
    classifier = 'other'
    customName = 'other.jar'
}

これを gradle でビルドすると、クラスファイルは次のように編成されます。

build
 > classes
     > main
       > com
     > other
       > com

対応するクラスがどのソース フォルダから発生したかを「バックトラック」できるため、これは非常に便利です。その結果、各 sourceSet に同一のパッケージ名を付けても、正しいクラスを持つ個別の jar ファイルを取得できます。

メイヴン

Mavenでは、これは不可能のようです。build-helper-maven-plugin (複数のソース フォルダーを指定するため) とmaven-jar-plugin (複数の jar ファイルを構築するため)の組み合わせを使用することは可能ですが、パッケージ レベルでソースを分割することしかできません。除外を参照し、maven-jar-pluginに含めます。

私が理解しているように、これは、コンパイルされたクラスが、maven の元のソースフォルダーに基づいてターゲット/クラスフォルダーに編成されていないという事実に由来します。

したがって、次のことが必要な場合:

  1. プロジェクトに複数のソース フォルダーを用意し、ソース フォルダー間に同じ名前のパッケージを含めることができます。
  2. ソースフォルダーごとに jar ファイルを生成します。

gradle (またはこの柔軟性を提供する他のビルド ツール) を使用する必要があります。または、同じ柔軟性を提供する maven の秘密のバックドアを見逃したことがありますか?

4

0 に答える 0