Mercurial > public > gradleplugins
view 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 |
line wrap: on
line source
package org.ssdt_ohio.gradle.plugins import org.gradle.api.Project import org.gradle.api.Plugin import org.gradle.api.plugins.JavaPlugin import java.util.Date import org.gradle.api.plugins.GroovyPlugin; class VersionClassPlugin implements Plugin<Project> { def void apply(Project project) { project.getPlugins().apply( GroovyPlugin.class ) def genSrc = 'generated-src/version' def generatedSrcDir = new File(project.buildDir, genSrc) def makeVersionClassTask = project.task('makeVersionClass') << { def now = new Date() def targetPackage = getTargetClass(project) def outFile = new File(generatedSrcDir,targetPackage.replaceAll('\\.',"/") + "/ProjectVersion.groovy") outFile.getParentFile().mkdirs() logger.info("creating $targetPackage in $outFile") def f = new FileWriter(outFile) f.write(""" package $targetPackage /** * Generated by gradle build. */ public class ProjectVersion { public static final String NAME = "${project.name}" public static final String GROUP = "${project.group}" public static final String VERSION = "${project.version}" public static final String DATE = "$now" public static String getDetailedVersion() { "\$GROUP:\$NAME:\$VERSION \$DATE" } public static String getID() { "\$GROUP:\$NAME:\$VERSION" } } """) f.close() } project.sourceSets { main { groovy { srcDir project.buildDir.name+'/'+genSrc } } } makeVersionClassTask.getInputs().files(project.sourceSets.main.getAllSource() ) makeVersionClassTask.getOutputs().files(generatedSrcDir) if (project.getBuildFile() != null && project.getBuildFile().exists()) { makeVersionClassTask.getInputs().files(project.getBuildFile()) } // project.getTasks().getByName('compileGroovy').dependsOn('compileVersionGroovy') project.getTasks().getByName('compileGroovy').dependsOn('makeVersionClass') // project.getTasks().getByName('jar') { // from project.sourceSets.version.output // } } private getTargetClass(project) { def source = project.sourceSets.main.groovy.getSrcDirTrees() def files = project.sourceSets.main.groovy as File[] def targetDir = files.first().parentFile.toString() def targetPackage = targetDir source.each { targetPackage -= it.getDir().getPath().toString() } targetPackage = targetPackage.replaceAll("\\\\",'.').replaceAll('/','.') targetPackage = targetPackage.startsWith(".") ? targetPackage - "." : targetPackage return targetPackage } }