Skip to content

Instantly share code, notes, and snippets.

@cmcginty
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmcginty/eb762e9bd9f62f99e521 to your computer and use it in GitHub Desktop.
Save cmcginty/eb762e9bd9f62f99e521 to your computer and use it in GitHub Desktop.
Gradle DeploymentDescriptor EAR Plugin

Gradle DeploymentDescriptor EAR Plugin

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: cmcginty@akimeka.com
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))
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment