2017-11-20 8 views
0

既存のプロジェクトを依存関係として使用して新しいプロジェクトを構築したいと考えています。次のファイル構造が使用されます。projAでGradleマルチプロジェクトの依存関係のインポートなし

projA 
    -src 
     -main 
      -java 
       -HelloWorld.java 
    -build.gradle 
    -settings.gradle 
projB 
    -src 
     -main 
      -java 
       -Greeter.java 
    -build.gradle 
    -settings.gradle 

プロジェクトはprojBプロジェクト(HelloWorldのはグリーターを使用しています)に依存します。 projBのsettings.gradleは次のようになります。

rootProject.name = 'projB' 

build.gradleはかなりまっすぐ進むもある:

apply plugin: 'java' 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 

projAのsettings.gradleファイルがそうのようなprojBが含まれるように設定されています。

rootProject.name = 'projA' 
include ':projB' 
project(':projB').projectDir = new File(settingsDir, '../projB') 

最後に、projAのbuild.gradleがそうのようなプロジェクトが含まれています

apply plugin: 'java' 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile project(':projB') 
    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 

HelloWorldでGreeterを使用したい場合は、インポートエラーが発生します。私がprojAプロジェクトを再構築しても。これは、私が思いつくことができるように、マルチプロジェクトのクリーンなことです。指定した依存関係のクラスを使用できないのはなぜですか?

+0

これらの2つのプロジェクトの上にルートモジュールがありますか、フラットな構造ですか。 –

+0

「プロジェクト構造|モジュール|依存関係」のprojBに依存していますか? –

+0

これは適切なマルチプロジェクトレイアウトではありません。 'projA'の' settings.gradle'はハッキーです。適切な設定では、 'settings.gradle'ファイルが1つしかありません。 – nickb

答えて

-1

あなたは一つだけsettings.gradleファイルを持っている必要があり、それはこのように、プロジェクトのrootディレクトリに配置する必要があります、また

include 'projA' 
include 'projB' 

あなたを:あなたのsettings.gradleは次のようになります。

projA/ 
    src/main/java/ 
     HelloWorld.java 
    build.gradle 
projB/ 
    src/main/java/ 
     Greeter.java 
    build.gradle 
settings.gradle 

ライブラリプロジェクトのクラスを正しくimportにするためにjavaパッケージを使用する必要があります。

+0

これはマルチプロジェクト設定のようではありません。マルチモジュール設定のようです。プロジェクトBには既に独自の設定ファイルがあります。それを削除するつもりはありません。 – user1111652

+0

gradleでは、マルチプロジェクトビルドには 'settings.gradle'を持つ1つのルートプロジェクトがあります。ドキュメントによると、 "複数のプロジェクトをグラデーションで構築するには、1つのルートプロジェクトと1つ以上のサブプロジェクトにサブプロジェクトを含めることができます。" https://docs.gradle.org/4.3.1/userguide/multi_project_builds.html – Eloff

+1

プロジェクト用の複合ビルドを試してみたいと思うhttps://docs.gradle.org/current/userguide/composite_builds.html – user1111652

関連する問題