2017-06-07 20 views
1

私はこのようなプロジェクトを持っています。gradle - 実行命令発行

root 
    build.gradle 
    settings.gradle 
    project1 
     build.gradle 

    project2 
     build.gradle 

    project3 
     build.gradle 

    project4 
     build.gradle 

settings.gradleはこのようになります。それが私たちの内部の依存性(jarファイルをダウンロードする必要があるため、 'Project1の'

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

repositories { 
    mavenCentral() 
} 
dependencies { 
    compile project(':project1') 
    compile project(':project2') 
    compile project(':project3') 
    compile project(':project4') 
} 

だから基本的に、私が欲しい(ルートから)

include ':project1', ':project2', ':project3', ':project4' 

build.gradleは、最初のProject2、3、4の前に建てられますいくつかのスキーマファイル)を使用して、project2,3および4が(project1からの)スキーマファイルから成果物を抽出できるようにします。

私はそれを実行すると、私はproject2の標準出力を見て、3が最初に印刷されてからproject1が実行されます。

特にproject2には、このタイプの引数を実行する多くのタスク(type:JavaExec)が含まれています。

main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler' 
    classpath "${BUILDROOT}/project1/${COMMON_DENEPDENCY_FILE}" 
    args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example1.xsd", "${projectDir}/xml/schema/example1.xsdconfig" 

タスクの1つは次のようになります。私はproject2のようないくつかのタスクを持っています。したがって、project1とproject2を実行する前に、project1を完全に構築する必要があります。

task xmlbeansExample2(dependsOn: xmlbeansExample1, type: JavaExec) { 
    println "Example2 is running" 
    main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler' 
    classpath "${BUILDROOT}/common/${COMMON_DENEPDENCY_FILE}" 
    args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example2.xsd", "${projectDir}/xml/schema/example2.xsdconfig" 
    println "Example2 is done" 
} 
task handleSchema(dependsOn: ['xmlbeansExample1', 'xmlbeansExample2']) 

build.dependsOn handleSchema, jar 

私はルートまたはのProject2から 'Gradleのビルド' を実行するのProject2

から

build.gradleは、私が最初のProject2からのプリントアウトを参照してください。

レイアウトに問題はありますか?

私のチームはAntからGradleに移行していますが、gradleはAntの実行と少し違っているようです。たぶん、私はグラデルについてほとんど誤解されていません。

答えて

0

ルートプロジェクトの場合、子モジュールを依存関係として指定する必要はありません。

モジュールが別のモジュールに依存している場合は、この依存関係を明確に定義する必要があります。

// project2/build.gradle 
dependencies { 
    compile project(':project1') 
} 
関連する問題