2017-05-06 10 views
0

私はGradleプロジェクトを別のGradleプロジェクトに依存しています。 build.gradleGradleプロジェクトを依存関係として含めようとしましたが、動作しません。

  • project1に
    • build.gradle
    • settings.gradle
    • のsrc/
  • のProject2
    • :私のプロジェクト構造は、このようなものです
    • settings.gradle project1/build.gradle
    • のsrc/

私は依存関係としてproject2を追加したい:

version '1.0-SNAPSHOT' 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

sourceSets { 
    main { 
     java { 
      srcDirs = [ 'src' ] 
     } 
    } 
} 

include ':project2' 
project(':project2').projectDir = new File("../project2") 

dependencies { 
    compile project(':project2') 
} 

は、残念ながら、私は常に、このエラーメッセージが出てい

Error:(21, 0) Could not find method include() for arguments [:project2] on root project 'project1' of type org.gradle.api.Project.

私はGradle 3.5を使用しています。コマンドライン(gradle build)とIntelliJの両方でエラーが発生しました。私は同じ問題(thisthis)についていくつかのStackOverflowスレッドを見つけましたが、役に立たなかった。

Gradle multi-project documentationには、エラーの原因となる具体的な要件が記載されていません。

私がincludeを呼び出したままにすると、プロジェクトパスがルートプロジェクトで見つからないというメッセージが表示されます。

また、依存関係をproject1というサブディレクトリに移動しようとしましたが、成功しませんでした。

私は何が間違っているのだろうと思うのですが、明らかに他の多くの人々が同じ問題を抱えているのではないでしょうか。私はヒントに感謝します。

注:これはAndroidプロジェクトではありません。

+0

'include'は' settings.gradle'という別のファイルで呼び出さなければなりません。試してみてください。 – Opal

+0

ありがとう!私はそれが私が行方不明だったと思います。しかし、今私は、読み取り専用のプロパティprojectDirが設定できないというメッセージを受け取りました。依存関係としてコンパイルプロジェクト( ':..:project2')を指定し、projectDir assigmentを削除することで、私はそれを回避しました。 –

+0

あなたはそれをgradleで行うことはできません。どちらのプロジェクトも、マルチプロジェクトビルド(https://docs.gradle.org/current/userguide/multi_project_builds.html)のサブプロジェクトであるか、コンポジットビルド(https://docs.gradle。 org/current/userguide/composite_builds.html)。 –

答えて

3

最初のコメントで指摘したように、includesettings.gradleに実際に入る必要があり、build.gradleには入りません。同じことがprojectDirプロパティの変更にも適用されます。

コメント3私にも別のアイデアを与えました。次のようにプロジェクトがsettings.gradleに含めることができます。

includeBuild '../project2' 

をし、それが少ないコードだときれいに見えるので、

dependencies { 
    compile 'group:project2:version' 
} 

が、私は一般的に、より良い本を好きなようにproject1/build.gradleに私は依存関係を指定します。しかし、再帰的な複合ビルドは不可能であるという欠点があります。したがって、project2自体も複合ビルドであれば、これは機能しません。

関連する問題