2016-06-23 8 views
0

私はgradleで管理されたマルチプロジェクト構造を持っています。すべてのJavaサブプロジェクトがこのjarブロックを持っている:マルチプロジェクトgradleビルドシステムで変数を使用する方法は?

def main_class = "foo.Main" 
jar { 
    manifest { 
     attributes 'Main-Class': main_class 
    } 
} 

だから、私は、ルートプロジェクトにjarファイルのブロックを移動するつもりだと決めていないとサブプロジェクトでのみdef main_classを持っていますが、どんなに私はmain_class変数を定義しましたが、動作しませんでした。私はproject.extproperties {}も試しました。

私はproject.extで働いているdistと呼ばれる、タスクを持っていた:

ルートプロジェクト:

subprojects { 
    task dist(dependsOn: jar) << { 
     copy { 
      from('build/libs') { 
       include (build_jar) 
      } 
      into('.') 
      rename(build_jar, app_jar) 
     } 
    } 
} 

サブプロジェクト:

project.ext { 
    build_jar = "..." 
    app_jar = "..." 
} 

はどのように動作し、変数を定義することができますjardistタスクのようですか?

答えて

0

あなたはただ行うことができます:PROJECT_ROOT/build.gradleファイルに

ext { 
    main_class = 'com.Main' 
} 

subprojects { 
    apply plugin: 'java' 
    jar { 
    manifest { 
     attributes 'Main-Class': main_class 
    } 
    } 
} 

+0

残念ながら、 'main_class'の値はサブプロジェクト – Zsolt

+0

に依存します。この値をroot build.gradleに保存することができれば、これはまだ実行可能です。 – Opal