plugins { id 'groovy' id 'maven-publish' } dependencies { implementation gradleApi() implementation localGroovy() } group = 'org.thejk' version = '0.3.11' publishing { repositories { maven { url = layout.projectDirectory.dir('repo') } } publications { maven(MavenPublication) { artifactId = 'flycheck-android-experimental' from components.java } } } 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.11' }