3
import org.gradle.api.Plugin
3
4
import org.gradle.api.Project
4
import org.gradle.api.Plugin
6
6
class WebappTemplatesPlugin extends JavaTemplatesPlugin implements Plugin<Project> {
7
void createBase(String path = System.getProperty("user.dir"), String projectName) {
9
ProjectTemplate.fromRoot(path) {
10
"src/main/webapp/WEB-INF" {
11
"web.xml" template: "/templates/webapp/web-xml.tmpl", project: [name: projectName]
16
void apply(Project project) {
17
project.apply(plugin: "java-templates")
19
project.task("createWebappProject", group: TemplatesPlugin.group, description: "Creates a new Gradle Webapp project in a new directory named after your project.") << {
20
def projectName = TemplatesPlugin.prompt("Project Name:")
21
def useJetty = TemplatesPlugin.promptYesOrNo("Use Jetty Plugin?")
23
createBase(projectName, projectName)
24
ProjectTemplate.fromRoot(projectName) {
25
"build.gradle" template: "/templates/webapp/build.gradle.tmpl", useJetty: useJetty
28
println "No project name provided."
31
project.task("initWebappProject", group: TemplatesPlugin.group, description: "Initializes a new Gradle Webapp project in the current directory.") << {
32
createBase(project.name)
33
def useJetty = TemplatesPlugin.promptYesOrNo("Use Jetty Plugin?")
35
TemplatesPlugin.prependPlugin "jetty", new File("build.gradle")
37
TemplatesPlugin.prependPlugin "war", new File("build.gradle")
7
void createBase(String path = System.getProperty('user.dir'), String projectName) {
9
ProjectTemplate.fromRoot(path) {
10
'src/main/webapp/WEB-INF' {
11
'web.xml' template: '/templates/webapp/web-xml.tmpl', project: [name: projectName]
16
void apply(Project project) {
17
project.apply(plugin: 'java-templates')
19
def props = project.properties
21
project.task('createWebappProject', group: TemplatesPlugin.group, description: 'Creates a new Gradle Webapp project in a new directory named after your project.') << {
22
def projectName = props['newProjectName'] ?: TemplatesPlugin.prompt('Project Name:')
23
def useJetty = props['useJettyPlugin'] ?: TemplatesPlugin.promptYesOrNo('Use Jetty Plugin?')
25
String projectGroup = props['projectGroup'] ?: TemplatesPlugin.prompt('Group:', projectName.toLowerCase())
26
String projectVersion = props['projectVersion'] ?: TemplatesPlugin.prompt('Version:', '1.0')
27
createBase(projectName, projectName)
28
ProjectTemplate.fromRoot(projectName) {
29
'build.gradle' template: '/templates/webapp/build.gradle.tmpl', useJetty: useJetty, projectGroup: projectGroup
30
'gradle.properties' content: "version=${projectVersion}", append: true
33
println 'No project name provided.'
36
project.task('initWebappProject', group: TemplatesPlugin.group, description: 'Initializes a new Gradle Webapp project in the current directory.') << {
37
createBase(project.name)
38
def useJetty = props['useJettyPlugin'] ?: TemplatesPlugin.promptYesOrNo('Use Jetty Plugin?')
39
File buildFile = new File('build.gradle')
40
buildFile.exists() ?: buildFile.createNewFile()
42
TemplatesPlugin.prependPlugin 'jetty', buildFile
44
TemplatesPlugin.prependPlugin 'war', buildFile
b'\\ No newline at end of file'