Okay, here’s my solution. I created a new Gradle script file called ‘build-rmt-svc-handler.gradle’ which is included into each one of our custom WAR projects…
/*
* Gradle build script fragment for generating and compiling the
* GenericRemoteServicesHandlerImpl.class
*/
configurations {
rmtSvcHandlerBuilder
}
dependencies {
rmtSvcHandlerBuilder "junit:junit:$ver_junit"
rmtSvcHandlerBuilder "org.reflections:reflections:$ver_reflections"
rmtSvcHandlerBuilder "org.slf4j:slf4j-api:$ver_slf4j"
}
task generateRmtSvcHandlerImpl(type: JavaExec) {
dependsOn jar
classpath = files(
configurations.rmtSvcHandlerBuilder,
fileTree(dir: "$rootProject.projectDir/gwt", include: '*.jar'),
fileTree(dir: "$rootProject.projectDir/AcmeGwt/build/libs", include: '*.jar'),
fileTree(dir: "$rootProject.projectDir/AcmeCore/build/libs", include: '*.jar'),
fileTree(dir: "/${buildDir}/libs", include: '*.jar'))
main = 'com.acme.server.service.GenericRemoteServicesJsonHandlerBuilder'
args "/${buildDir}/generated-sources/GenericRemoteServicesHandlerImpl.java"
args 'false'
doFirst {
(new File("/${buildDir}/generated-sources")).mkdirs()
}
}
task compileRmtSvcHandlerImpl(type: JavaCompile) {
dependsOn generateRmtSvcHandlerImpl
classpath = files(
fileTree(dir: "$rootProject.projectDir/AcmeGwt/build/libs", include: '*.jar'),
fileTree(dir: "$rootProject.projectDir/AcmeCore/build/libs", include: '*.jar'),
fileTree(dir: "/${buildDir}/libs", include: '*.jar'))
source = fileTree(dir: "/${buildDir}/generated-sources", include: '**/*.java')
destinationDir = file("/${buildDir}/classes/java/main")
}
war {
dependsOn compileRmtSvcHandlerImpl
}
I wish it didn’t feel so hacky, and I’m still open to other suggestions if anyone has any.
Thanks and best regards,
Lee