2018年7月15日GradleのEclipseプラグインは、build.gradleに記述した通りに、Eclipseの.projectファイル.classpathファイルを書き換えてくれるので非常に便利なのだが、しかし意図しない状態になってしまうことがある。foldersがONになっているすべてのbuild.gradleに共通のリンクファイルを.projectに記述したい。IDEから行う方法とその結果.project再作成の際に消える問題GradleのEclipseプラグインの問題ソースフォルダを複数回記述してしまうビルドの都合で、以下のように同じソースフォルダを複数記述している。}}すると、このプラグインは、Eclipseのビルドパスに同じsrc_commonというソースフォルダを複数回記述してしまう。これはEclipse側としては気に入らないため、当然エラー状態になり、手で修正せざるをえない。‘**/*Test.java’」という記述をしておくと、これまたご丁寧なことに、Eclipseのビルドパスにもこの記述を再現してしまう。これらの*Test.javaというクラスは、ビルド時には見えなくなってほしいのだが、開発環境では見えていて欲しいのであるにも関わらず。foldersがONになっているビルドパスの中のこの指定は複数のソースフォルダがある場合に、そのコンパイル結果を一つにせず、別々のフォルダに出力するという意味なのだが、これが勝手にONになる。OFFにさせる方法は無いようだ。すべてのbuild.gradleに共通のリンクファイルを.projectに記述したい。これについては後の方で説明する。他にやり方はあるかと思うが、Gradleが良くわからない私にとって最も簡単な方法をとった。これで行くことにする。build.gradleにeclipseプラグインに関する動作変更を記述する。.classpath、.projectの両者についてwhenMergedの時点で修正するクロージャを指定する。}.classpathの変更.classpathに関する変更クロージャwhenMergedEclipseClassPathModは以下のようなものである。この処理は共通化するために関数にはしていない。クロージャとして実現している。classPathに入れてしまう。'**/*Test.java';のexcludeを削除する。勝手に指定されたoutputを削除する。foldersがONになってしまう。}}.projectの変更.projectに関する変更のためのクロージャは以下のようなものである。Eclipseの各プロジェクトに、共通ファイルへのリンクをつけるものだが、これについては後で説明する。null));}これは、単純にlinkedResourcesにエントリを追加するだけなので、以下のように記述してもよい。}}eclipseプラグインへの修正クロージャを共通ファイルにまとめ、Eclipseプロジェクトから閲覧するこれらのeclipseプラグインについての動作修正処理を、各プロジェクトのbuild.gradleに毎回記述するのも面倒なので、共通ファイル化する。これについては、build.gradleの共通設定に記述した。common.gradleは、各プロジェクトから独立した存在であり、ユーザホーム以外の場所に設置することができる。各Eclipseプロジェクトからこれが見えて欲しいのである。各々のEclipseプロジェクトに取り組んでいるあいだに、新たなものをcommon.gradleに入れたくなるかもしれない。IDEから行う方法とその結果これをEclipseIDEで行うには次のようにする。プロジェクトを右クリックし、Fileを選択する。systemをチェックする。後はBrowseで、ファイルを指定すればよい。すると、Eclipseプロジェクト中にcommon.gradleが「リンクされた状態」で現れる。ファイルのコピーではなく、いわばプロジェクト外のファイルを直接見れるようになる。.project再作成の際に消える問題しかし、GradleのEclipseプラグインが機能すると、こんな事情は知るよしも無いので、手作業で作成したリンクを消しさってしまう。そのために、先のeclipseProjectModクロージャを作成した。.projectファイルの再作成に際し、常にこのリンクを保持する。再度だが、単に以下のように書いてもよい。...gradleの動作の調べ方gradleをいじる場合、その仕組みをマニュアルからは見つけ出せないことがある。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。