-
Notifications
You must be signed in to change notification settings - Fork 951
/
_GrailsInit.groovy
130 lines (114 loc) · 4.71 KB
/
_GrailsInit.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
* Copyright 2004-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Gant script that handles general initialization of a Grails applications
*
* @author Graeme Rocher
*
* @since 0.4
*/
import org.springframework.core.io.FileSystemResource
import grails.util.GrailsNameUtils
import groovy.grape.Grape
import grails.util.Metadata
// No point doing this stuff more than once.
if (getBinding().variables.containsKey("_init_called")) return
_init_called = true
Grape.enableAutoDownload = true
// add includes
includeTargets << grailsScript("_GrailsArgParsing")
includeTargets << grailsScript("_PluginDependencies")
// Generates Eclipse .classpath entries for all the Grails dependencies,
// i.e. a string containing a "<classpath entry ..>" element for each
// of Grails' library JARs. This only works if $GRAILS_HOME is set.
eclipseClasspathLibs = {
def result = ''
if (grailsHome) {
(new File("${grailsHome}/lib")).eachFileMatch(~/.*\.jar/) {file ->
if (!file.name.startsWith("gant-")) {
result += "<classpathentry kind=\"var\" path=\"GRAILS_HOME/lib/${file.name}\" />\n\n"
}
}
}
result
}
target(createStructure: "Creates the application directory structure") {
ant.sequential {
mkdir(dir: "${basedir}/src")
mkdir(dir: "${basedir}/src/java")
mkdir(dir: "${basedir}/src/groovy")
mkdir(dir: "${basedir}/grails-app")
mkdir(dir: "${basedir}/grails-app/controllers")
mkdir(dir: "${basedir}/grails-app/services")
mkdir(dir: "${basedir}/grails-app/domain")
mkdir(dir: "${basedir}/grails-app/taglib")
mkdir(dir: "${basedir}/grails-app/utils")
mkdir(dir: "${basedir}/grails-app/views")
mkdir(dir: "${basedir}/grails-app/views/layouts")
mkdir(dir: "${basedir}/grails-app/i18n")
mkdir(dir: "${basedir}/grails-app/conf")
mkdir(dir: "${basedir}/test")
mkdir(dir: "${basedir}/test/unit")
mkdir(dir: "${basedir}/test/integration")
mkdir(dir: "${basedir}/scripts")
mkdir(dir: "${basedir}/web-app")
mkdir(dir: "${basedir}/web-app/js")
mkdir(dir: "${basedir}/web-app/css")
mkdir(dir: "${basedir}/web-app/images")
mkdir(dir: "${basedir}/web-app/META-INF")
mkdir(dir: "${basedir}/lib")
mkdir(dir: "${basedir}/grails-app/conf/spring")
mkdir(dir: "${basedir}/grails-app/conf/hibernate")
}
}
target(checkVersion: "Stops build if app expects different Grails version") {
if (metadataFile.exists()) {
if (appGrailsVersion != grailsVersion) {
event("StatusFinal", ["Application expects grails version [$appGrailsVersion], but GRAILS_HOME is version " +
"[$grailsVersion] - use the correct Grails version or run 'grails upgrade' if this Grails " +
"version is newer than the version your application expects."])
exit(1)
}
}
else {
event("StatusFinal", ["Application metadata not found, please run: grails upgrade"])
exit(1)
}
}
target(updateAppProperties: "Updates default application.properties") {
def entries = [ "app.name": "$grailsAppName", "app.grails.version": "$grailsVersion" ]
if (grailsAppVersion) {
entries["app.version"] = "$grailsAppVersion"
}
updateMetadata(entries)
// Make sure if this is a new project that we update the var to include version
appGrailsVersion = grailsVersion
}
target(launderIDESupportFiles: "Updates the IDE support files (Eclipse, TextMate etc.), changing file names and replacing tokens in files where appropriate.") {
// do nothing. deprecated target
}
target(init: "main init target") {
depends(createStructure, updateAppProperties)
grailsUnpack(dest: basedir, src: "grails-shared-files.jar")
grailsUnpack(dest: basedir, src: "grails-app-files.jar")
classpath()
// Create a message bundle to get the user started.
touch(file: "${basedir}/grails-app/i18n/messages.properties")
// Set the default version number for the application
updateMetadata(
"app.version": grailsAppVersion ?: "0.1",
"app.servlet.version": servletVersion)
}