2

次のようにレイアウトされたプロジェクトがあります。

abc/
    abc-core/
        abc-core-actions/
            abc-core-actions-a/
                src/
            abc-core-actions-b/
                src/
        abc-core-package/
            src/
    abc-framework/
        abc-framework-core/
            lib/
        abc-framework-dependencies/
            lib/
    abc-utility/
        src/

libプロジェクトのフォルダー内にabc-frameworkは、コア フレームワークと、フレームワークが機能するために必要な依存関係を表す一連の jar があります。

私が達成したいのは、瓶の下abc-coreにあるものでありabc-utility、瓶を利用できるようにすることですlib

次のようなことをしていることがわかりました:

project(':abc-core:abc-core-actions') {
    dependencies {
        compile fileTree(dir: '../../abc-framework/abc-framework-core/lib', includes: ['*.jar'])
        compile fileTree(dir: '../../abc-framework/abc-framework-dependencies/lib', includes: ['*.jar'])
    }
}

うまくいきましたが、これは各セクション (abc-core:abc-core-actions-a、abc-utility など) を意味します。上記のようなセクションとそれに関連するセクションを含める必要があります。

理想的には、すべてのサブプロジェクトがそれらのフォルダーに fileTree 依存関係を持つことを定義したいと思いますが、問題はサブプロジェクトに応じてパスが変更されることです。

では、プロジェクトの絶対パスをcompile fileTree参照する最良の方法は何でしょうか?abc

4

1 に答える 1

3

すべてのプロジェクトが同じマルチプロジェクト ビルドに参加していると仮定すると、任意のプロジェクトの組み込みprojectDirプロパティを使用して、プロジェクトの 1 つに対する絶対パスをビルドできます。

build.gradleしたがって、最上位ディレクトリにファイルがある場合abc、それはおそらく次のようになります (上記のコメントに基づく):

//"project" here equates to the root project, i.e. "abc"
def frameworkCore = "${project.projectDir}/abc-framework/abc-framework-core/lib"
def frameworkDeps = "${project.projectDir}/abc-framework/abc-framework-dependencies/lib"
subprojects {
    dependencies {
        compile fileTree(dir: frameworkCore, includes: ['*.jar'])
        compile fileTree(dir: frameworkDeps, includes: ['*.jar'])
    }
}
于 2014-05-15T19:41:09.510 に答える