2013-09-03 20 views
6

私は、別のサブプロジェクトであるGradle JARプロジェクトを構築しようとしており、出力JARファイルを親ディレクトリ(親ディレクトリ、兄弟ディレクトリの "lib"ディレクトリ)に配置したいと考えています。このためにGradleを設定するにはどうしたらいいですか?これはどこに文書化されていますか?Gradle:jarの場所をプロジェクトの親ディレクトリに設定するにはどうすればよいですか?

+0

なぜそれをしたいですか?各プロジェクトには独自のビルド出力ディレクトリがありますが、それを逸脱することはお勧めしません。それは混乱し、あなたがもはやプロジェクトを独立して清掃することができなくなることを意味します。 –

+0

こんにちはPeter - 私はサブプロジェクトのビルドを分離する原則を理解していますが、ここではGradleを使ってビルドされたサブプロジェクト(groovyソースを含む)に依存するGrailsプラグインを作成しています。 jarをプラグインの "lib"ディレクトリに出力します。プラグイン自体にはビルドがありません(Grailsプラグインなので)、サブプロジェクトのみです。 –

+0

うまくいけば、GradleはMavenのようなプロジェクト構造について厳しい規則を課すことなく、私がしたいことを実行するのに十分な柔軟性を持っていることを望みます; –

答えて

11

build.gradleでは、追加:

libsDirName = '../../lib' 

コンフィグ設定がjava pluginの公式Gradleのドキュメントに示されています。

ところで、私はPeterとHieryのコメントと回答の背後にある意図に完全に同意しますが、最も簡単な解決策が最高のものです。

5

Peterと入力したコメントに同意します。しかし、親プロジェクトがサブモジュールの出力に依存していることを表現したいと思います。それを表現し、親がサブモジュールの出力を 'lib'ディレクトリにコピーすることがより理にかなっていることを保証する。

task assembleSubModules(type: Copy) { 
    destinationDir = file("lib") 

    into("lib") { 
    project.subprojects.each { p -> 
     from(p.tasks.withType(Jar)*.outputs) 
    } 
    } 
}