Skip to content

Instantly share code, notes, and snippets.

@augustl
Last active August 29, 2015 14:09
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 augustl/c0fdf2c7ce9e388c22c6 to your computer and use it in GitHub Desktop.
Save augustl/c0fdf2c7ce9e388c22c6 to your computer and use it in GitHub Desktop.
package com.augustl.gradle.warlike
import org.gradle.api.Task
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.Action
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.internal.plugins.DslObject
import org.gradle.api.internal.tasks.DefaultSourceSet
import org.gradle.api.plugins.ApplicationPlugin
import org.gradle.api.plugins.GroovyPlugin
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.plugins.WarPlugin
import org.gradle.api.tasks.JavaExec
import org.gradle.api.tasks.SourceSet
import org.gradle.plugins.ide.idea.IdeaPlugin
class WarlikePlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.plugins.apply(WarPlugin)
project.plugins.apply(GroovyPlugin)
JavaPluginConvention convention = project.getConvention().getPlugin(JavaPluginConvention.class)
convention.getSourceSets().create("warlike")
convention.getSourceSets().main {
output.classesDir = "build/main-web/WEB-INF/classes"
output.resourcesDir = "build/main-web/WEB-INF/resources"
}
SourceSet mainSourceSet = convention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)
SourceSet warlikeSourceSet = convention.getSourceSets().getByName("warlike")
project.dependencies {
warlikeCompile 'org.eclipse.jetty:jetty-server:9.3.0.M0'
warlikeCompile 'org.eclipse.jetty:jetty-servlet:9.3.0.M0'
warlikeCompile 'org.eclipse.jetty:jetty-webapp:9.3.0.M0'
warlikeCompile 'org.eclipse.jetty:jetty-annotations:9.3.0.M0'
warlikeCompile "org.springframework:springloaded:1.2.0.RELEASE"
warlikeCompile convention.getSourceSets().main.compileClasspath
}
project.getTasks().getByName("compileWarlikeGroovy").configure {
classpath += mainSourceSet.getOutput()
}
Task run = project.tasks.create("runWarlike", JavaExec)
run.dependsOn("classes")
run.description = "Runs an auto-reloading WAR container like environment"
run.classpath = mainSourceSet.runtimeClasspath
run.classpath += warlikeSourceSet.compileClasspath
run.classpath += warlikeSourceSet.getOutput()
run.args = [9085]
run.main = "com.augustl.gradle.warlike.WarlikeServer"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment