Use this Gradle plugin to directly access the DeploymentDescriptor class internal to the EAR plugin.
// custom Gradle task for creating EAR deployment descriptors (i.e. application.xml)
// author: [email protected]
import org.gradle.api.*
import org.gradle.api.file.*
import org.gradle.api.tasks.*
import org.gradle.api.tasks.incremental.*
import org.gradle.util.*
import org.gradle.internal.reflect.Instantiator
import org.gradle.plugins.ear.descriptor.DeploymentDescriptor
import org.gradle.plugins.ear.descriptor.internal.DefaultDeploymentDescriptor
import javax.inject.Inject
class AkiDeploymentDescriptor extends DefaultTask {
DeploymentDescriptor deploymentDescriptor
@Input
Collection properties = []
@OutputDirectory
File destDir = temporaryDir
@Inject
protected Instantiator getInstantiator() {
throw new GradleException()
}
AkiDeploymentDescriptor deploymentDescriptor(Closure configureClosure) {
if (!this.deploymentDescriptor) {
this.deploymentDescriptor = instantiator.newInstance(
DefaultDeploymentDescriptor.class,
project.fileResolver,
instantiator)
}
ConfigureUtil.configure(configureClosure, this.deploymentDescriptor)
return this
}
@TaskAction
def execute(IncrementalTaskInputs inputs) {
deploymentDescriptor.writeTo( new File(this.destDir,deploymentDescriptor.fileName))
}
}