sourceSets mainの意味
今回もGradleに関する備忘録です。
'java'プラグインに関する話なのですが、ネット上のサンプルを見ると以下の様な
コードが例として挙がっています。
sourceSets { main { java { srcDir 'src/java' } } }
第23章 JavaプラグインやSourceSetのAPIを見ても、mainといった文字列は出てこなくて、これなんだろう...と思っていました。
*1
*2
結論からいうと、'java'プラグインが提供している標準のソースセット名
ということになります。
そもそもソースセットとはその名が表している通り、ソースファイルに関するグループの概念です。
ソースセットを定義することで、扱うべきソースの情報を管理できるわけです。
ちなみに'java'プラグインは標準で「main・test」2つのソースセットを提供しています。
いわゆるサンプルに出てきているあれです。
「main・test」と命名されているのは、Gradle標準のディレクトリ構成に合わせているからでしょう。
例えば以下はよく見かけると思います。
これはmain・testソースセットの値を変更している例です。
sourceSets { main { java { srcDir 'src/java' } } test { output.classesDir = file('.') } }
新しくソースセットを定義してみます
sourceSets { sample { java { srcDir 'src/sample' } } }
プロパティを確認してみましょう。
新たにソースセット&タスクが定義されていることが確認できます。
「gradle compileSampleJava」とすることで新たに定義したソースセットに対してコンパイルが実行できます。
gradle properties | egrep '^(sources|sourceSets|tasks)' ・ ・ sourceSets: [source set 'main', source set 'sample', source set 'test'] sources: [[source set 'main:java', source set 'main:resources'], [source set 'sample:java', source set 'sample:resources'], [source set 'test:java', source set 'test:resources']] tasks: [task ':assemble', task ':build', task ':buildDependents', task ':buildNeeded', task ':check', task ':classes', task ':clean', task ':compileJava', task ':compileSampleJava', task ':compileTestJava', task ':jar', task ':javadoc', task ':processResources', task ':processSampleResources', task ':processTestResources', task ':sampleClasses', task ':test', task ':testClasses']