apply plugin: 'groovy' dependencies { compile gradleApi() compile localGroovy() } apply plugin: 'maven' group = 'org.thejk' version = '0.1' uploadArchives { repositories { mavenDeployer { repository(url: uri('../repo')) } } } class PackageTask extends DefaultTask { @Input String packageName @InputFile File getLispScript() { return project.file('flycheck-android-experimental.el') } @InputFile File getPackageScript() { return project.file('flycheck-android-experimental-pkg.el') } @InputFile File getJavaPythonScript() { return project.file('bin/flycheck-android-java.py') } @OutputFile File getOutput() { return new File(project.buildDir, "${packageName}.tar") } @TaskAction def action() { def intermediate = new File(project.buildDir, 'package/intermediate') def target = new File(intermediate, packageName) def bin = new File(target, 'bin') bin.mkdirs() project.copy { from(lispScript, packageScript) into target } project.copy { from(javaPythonScript) into bin } project.exec { commandLine 'tar', '-c', '-f', output, '-C', intermediate, packageName } } } task packageLisp(type: PackageTask) { packageName 'flycheck-android-experimental-0.3' }