私の Gradle スクリプトでは、独自のカスタム "javacc" 構成で JavaCC を依存関係として宣言しています。次に、その構成を使用して JavaCC JAR へのパスを見つけ、そのパスをプロパティ ファイルに書き込みます。このファイルは、後で Gradle の外部で Ant によって使用されます。
現在、build.gradle
ファイルの関連部分は次のようになっています。
configurations {
javacc
}
repositories {
mavenCentral()
}
dependencies {
javacc group: 'net.java.dev.javacc', name: 'javacc', version: '5.0'
}
task cleanBuildHelpers(type: Delete) {
delete '.buildHelpers/ant.properties'
}
task prepareBuildHelpers(dependsOn: cleanBuildHelpers) << {
ant.propertyfile(file: '.buildHelpers/ant.properties') {
entry(key: 'javacc_jar', value: configurations.javacc.files.iterator().next())
}
}
これは私が望むように機能し、そのままにしておくことができます。ただし、prepareBuildHelpers
タスクに依存する他のタスクを実行するたびに、タスクは常に実行されます。大したことではありませんが、Gradle が JavaCC JAR を更新したときだけ実行する方法があれば教えていただきたいです。
JAR のタイムスタンプをチェックして、それをプロパティ ファイルのタイムスタンプと比較する方法に沿って考えていましたが、これが正しい方法であるかどうか、また、これを行うためのより適切でエレガントな方法があるかどうかはわかりません。
アイデアやアドバイスはありますか?