質問: gradleを利用してプログラムをビルドしています(`gradle build`)が、その際に特定のクラスを含まないようにするにはどのようにしたらよいでしょうか?(build.gradleファイルに記述、またはgradleコマンドにオプション等) 検索の結果gradleのdocsの51章内、【51.4.7. 推移的な依存関係の除外】などに辿り着きましたが、前提知識に乏しく、organizationが何か等からわからず立ち止まってしまっています。 例えばパッケージhoge.piyo内のHoge.javaをビルドから除外したい場合、どのようにするとよいでしょうか。 IDEにEclipseを利用していますが、Eclipseで該当を右クリック->Build Path->Excludeしても、gradle buildの際には除外されませんでした。 どうぞよろしくお願い致します。 --- argiusさんより頂いたご回答を参考に進めています。 後出しの情報で申し訳ないのですが、下記のようなマルチプロジェクトの構成でプログラムを作っており、 * piyo_root : ルートプロジェクト(ベース) * piyo_sub1 : サブプロジェクト1 * piyo_sub2 : サブプロジェクト2 * piyo_sub3 : サブプロジェクト3 たとえば、この中の、下記を除外したいと考えています。 * piyo_sub1 └src/main/java └hoge/piyo/Hoge.java * piyo_sub2 └src/main/java └hoge/hogehoge/HogeHoge.java ご回答頂いた通りに、各サブプロジェクト内のgradleファイルに追記したところ、生成されたjarをtvfでみても、 `2373 Tue May 31 17:07:44 JST 2016 hoge/piyo/Hoge.class` のような感じで含まれています(私のtvfへの認識がおかしかったらすみません)。 この場合、サブプロジェクトのgradleファイルではなく、ベースのプロジェクトのgradleファイルに記述すべきなのかと思い、今度はpiyo_root内のgradle.buildの`subProjects`プレースホルダ内に頂いた記述を追記しましたが、やはりjar tvfの結果に同様に対象が含まれてしまいます。 ほか、javaのビルドをgradleで行う:調査編2:依存から1行で特定jarを除外! - 文系プログラマによるTIPSブログを参考としましたが、こちらもうまくいきません。 引き続き知見を頂けますでしょうか。 --- さらに追記: 本当に基本的なことでした。各サブプロジェクトのgradleファイルにsourceSetsでexclude対象を記述し、ルートのプロジェクトで、`gradle clean`後に`gradle build`にて、jarから対象のファイルが除外されていることを確認できました。
回答: こうすれば良いみたいです。 下記のコードを`build.gradle`に追加してみてください。 `Hoge.java`がコンパイルエラーになっていても、無視してJarを作ってくれます。 ``` sourceSets { main { java { srcDir 'src/main/java' exclude 'hoge/piyo/Hoge.java' } } } ``` ... > > Eclipseで該当を右クリック->Build Path->Excludeしても、gradle buildの際には除外されませんでした。 > > > Eclipseのビルド設定(exclude設定が含まれる)はGradleとは何の関連付けもされていませんので、それでは反映されません。 (**★これ↓は設定がおかしくなるかもなので注意**) 逆に、上記の設定をした上でEclipseプラグインで反映させると、不完全ながらEclipseのビルドパスに反映されます。 ビルドパスがおかしなことになるかもなので注意してください。 ... 参考リンク: How can I exclude certain java files from being compiled? - Old Forum - Gradle Forums