gradleを使って、eclipseプロジェクトを生成する際にbuild.gradeに追加する設定のTips。自分用。
これらの設定はgradleでeclipseプロジェクトファイルを作った後に、IDE上から設定可能だが、毎回やるのは手間なのでbuild.gradleに入れたいと思っていたもの。
.classpathファイルからパスを抜く
特定のモジュール(具体的にはDynamoDBLocal)をgradleの依存関係に設定してeclipseプロジェクトを作ると、.soや.dllがクラスパスに入ってくるため、eclipseプロジェクトがエラーになる。
この場合、以下のようにして生成されるファイルからパスを除外する。
eclipse.classpath.file {
whenMerged { classpath ->
classpath.entries.removeAll { entry -> (entry.path.endsWith('dll') || entry.path.endsWith('so') || entry.path.endsWith('dylib')) }
}
}
JREのデフォルトアクセスルールに追加をする
特定のパッケージ(具体的にはjavafxやjavax.smartcardio)は、デフォルト状態ではeclipseから見えなくなっており、エラーになる。
この場合、以下のようにしてJREのアクセスルールに追加をする。
eclipse.classpath.file {
whenMerged {
def jre_container = entries.find { it.path.contains 'org.eclipse.jdt.launching.JRE_CONTAINER' }
jre_container.accessRules << new org.gradle.plugins.ide.eclipse.model.AccessRule("accessible", "javax/smartcardio/**")
}
}
Project Natureを追加する
特定のProject Nature(具体的にはgradleやSTSのGradleプラグイン)はデフォルトでは設定されない。
この場合、以下のようにしてproject natureを追加する
eclipse.project {
buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
natures 'org.eclipse.buildship.core.gradleprojectnature'
}
またBuildshipの場合、.settings以下のprefファイルがないとエラーになるので、以下のようにしてファイルを作成する。
tasks.eclipse.doFirst {
File prefs = file(".settings/org.eclipse.buildship.core.prefs")
if(!prefs.exists()){
prefs.append('''
connection.project.dir=
eclipse.preferences.version=1
'''.stripIndent())
}
}
なおこれらの設定は、すでに各種設定ファイルがある場合一見うまくいっているように見えるため、
gradle cleanEclipse eclipse
で一旦eclipseプロジェクトファイルをcleanしたほうが良さそう。
参考にさせていただいたエントリ: