Mercurial > public > gradleplugins
comparison src/main/groovy/org/ssdt_ohio/gradle/plugins/VersionClassPlugin.groovy @ 0:c51874d4a5a7
initial ssdt plugin
author | smith@nwoca.org |
---|---|
date | Fri, 18 May 2012 04:32:16 +0100 |
parents | |
children | 4db19f1c5ad0 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c51874d4a5a7 |
---|---|
1 package org.ssdt_ohio.gradle.plugins | |
2 | |
3 import org.gradle.api.Project | |
4 import org.gradle.api.Plugin | |
5 import org.gradle.api.plugins.JavaPlugin | |
6 import java.util.Date | |
7 import org.gradle.api.plugins.GroovyPlugin; | |
8 | |
9 class VersionClassPlugin implements Plugin<Project> { | |
10 | |
11 def void apply(Project project) { | |
12 project.getPlugins().apply( GroovyPlugin.class ) | |
13 def genSrc = 'generated-src/version' | |
14 def generatedSrcDir = new File(project.buildDir, genSrc) | |
15 | |
16 def makeVersionClassTask = project.task('makeVersionClass') << { | |
17 | |
18 def now = new Date() | |
19 def targetPackage = getTargetClass(project) | |
20 | |
21 def outFile = new File(generatedSrcDir,targetPackage.replaceAll('\\.',"/") + "/ProjectVersion.groovy") | |
22 | |
23 outFile.getParentFile().mkdirs() | |
24 logger.info("creating $targetPackage in $outFile") | |
25 def f = new FileWriter(outFile) | |
26 f.write(""" | |
27 package $targetPackage | |
28 /** | |
29 * Generated by gradle build. | |
30 */ | |
31 public class ProjectVersion { | |
32 | |
33 public static final String NAME = "${project.name}" | |
34 public static final String GROUP = "${project.group}" | |
35 public static final String VERSION = "${project.version}" | |
36 public static final String DATE = "$now" | |
37 | |
38 public static String getDetailedVersion() { | |
39 "\$GROUP:\$NAME:\$VERSION \$DATE" | |
40 } | |
41 | |
42 public static String getID() { | |
43 "\$GROUP:\$NAME:\$VERSION" | |
44 } | |
45 } | |
46 """) | |
47 f.close() | |
48 } | |
49 | |
50 project.sourceSets { | |
51 main { | |
52 groovy { | |
53 srcDir project.buildDir.name+'/'+genSrc | |
54 } | |
55 } | |
56 } | |
57 | |
58 makeVersionClassTask.getInputs().files(project.sourceSets.main.getAllSource() ) | |
59 makeVersionClassTask.getOutputs().files(generatedSrcDir) | |
60 if (project.getBuildFile() != null && project.getBuildFile().exists()) { | |
61 makeVersionClassTask.getInputs().files(project.getBuildFile()) | |
62 } | |
63 // project.getTasks().getByName('compileGroovy').dependsOn('compileVersionGroovy') | |
64 project.getTasks().getByName('compileGroovy').dependsOn('makeVersionClass') | |
65 // project.getTasks().getByName('jar') { | |
66 // from project.sourceSets.version.output | |
67 // } | |
68 } | |
69 | |
70 | |
71 private getTargetClass(project) { | |
72 def source = project.sourceSets.main.groovy.getSrcDirTrees() | |
73 def files = project.sourceSets.main.groovy as File[] | |
74 def targetDir = files.first().parentFile.toString() | |
75 | |
76 def targetPackage = targetDir | |
77 source.each { | |
78 targetPackage -= it.getDir().getPath().toString() | |
79 } | |
80 targetPackage = targetPackage.replaceAll("\\\\",'.').replaceAll('/','.') | |
81 targetPackage = targetPackage.startsWith(".") ? targetPackage - "." : targetPackage | |
82 | |
83 return targetPackage | |
84 | |
85 } | |
86 } |