Last active
August 29, 2015 14:10
-
-
Save darylteo/1662a693f11a44cc2cac to your computer and use it in GitHub Desktop.
JarExec task - supporting execution of Jars (i.e. java -jar). Place in buildSrc/src/main/java/org/gradle/api/tasks/JarExec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class JarExec extends JavaExec { | |
| private String jar; | |
| public void setJar(String jar) { | |
| this.jar = jar; | |
| } | |
| public String getJar() { | |
| return this.jar; | |
| } | |
| public void jar(String jar) { | |
| this.jar = jar; | |
| } | |
| @TaskAction | |
| public void exec() { | |
| if(this.jar == null) { | |
| throw new RuntimeException("Jar not specified"); | |
| } | |
| this.setMain('-jar'); | |
| List<String> args = this.getArgs(); | |
| args.add(0,this.jar); | |
| this.setArgs(args); | |
| super.exec(); | |
| } | |
| public String getMain(){ | |
| throw new MissingMethodException("getMain", JarExec.class); | |
| } | |
| public JavaExec setMain(String main){ | |
| throw new MissingMethodException("setMain", JarExec.class, main); | |
| } | |
| public JavaExecSpec main(String main){ | |
| throw new MissingMethodException("main", JarExec.class, main); | |
| } | |
| } | |
| task run(type: JarExec) { | |
| jar 'build/libs/simplest-proj-1.0-SNAPSHOT-fat.jar' | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Copyright 2011 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. | |
| */ | |
| package org.gradle.api.tasks; | |
| import org.gradle.api.file.FileCollection; | |
| import org.gradle.api.internal.ConventionTask; | |
| import org.gradle.api.internal.file.FileResolver; | |
| import org.gradle.api.internal.tasks.options.Option; | |
| import org.gradle.process.JavaExecSpec; | |
| import org.gradle.process.JavaForkOptions; | |
| import org.gradle.process.ProcessForkOptions; | |
| import org.gradle.process.internal.DefaultJavaExecAction; | |
| import org.gradle.process.internal.JavaExecAction; | |
| import javax.inject.Inject; | |
| import java.io.File; | |
| import java.io.InputStream; | |
| import java.io.OutputStream; | |
| import java.util.List; | |
| import java.util.Map; | |
| /** | |
| * Executes a Java application in a child process. | |
| * <p> | |
| * The process can be started in debug mode (see {@link #getDebug()}) in an ad-hoc manner by supplying the `--debug-jvm` switch when invoking the build. | |
| * <pre> | |
| * gradle someJavaExecTask --debug-jvm | |
| * </pre> | |
| */ | |
| public class JarExec extends ConventionTask { | |
| private JavaExecAction javaExecHandleBuilder; | |
| private String jar = null; | |
| public JarExec() { | |
| javaExecHandleBuilder = new DefaultJavaExecAction(getFileResolver()); | |
| } | |
| @Inject | |
| protected FileResolver getFileResolver() { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @TaskAction | |
| public void exec() { | |
| if(this.jar == null) { | |
| throw new RuntimeException("Jar not specified"); | |
| } | |
| // tell builder to use -jar as main | |
| javaExecHandleBuilder.setMain("-jar"); | |
| setJvmArgs(getJvmArgs()); // from JavaExec. Convention mapping. | |
| // put jar at beginning after -jar | |
| List<String> args = javaExecHandleBuilder.getArgs(); | |
| args.add(0,this.jar); | |
| javaExecHandleBuilder.setArgs(args); | |
| javaExecHandleBuilder.execute(); | |
| } | |
| public void setJar(String jar) { | |
| this.jar = jar; | |
| } | |
| public String getJar() { | |
| return this.jar; | |
| } | |
| public void jar(String jar) { | |
| this.jar = jar; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public List<String> getAllJvmArgs() { | |
| return javaExecHandleBuilder.getAllJvmArgs(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setAllJvmArgs(Iterable<?> arguments) { | |
| javaExecHandleBuilder.setAllJvmArgs(arguments); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public List<String> getJvmArgs() { | |
| return javaExecHandleBuilder.getJvmArgs(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setJvmArgs(Iterable<?> arguments) { | |
| javaExecHandleBuilder.setJvmArgs(arguments); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec jvmArgs(Iterable<?> arguments) { | |
| javaExecHandleBuilder.jvmArgs(arguments); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec jvmArgs(Object... arguments) { | |
| javaExecHandleBuilder.jvmArgs(arguments); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public Map<String, Object> getSystemProperties() { | |
| return javaExecHandleBuilder.getSystemProperties(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setSystemProperties(Map<String, ?> properties) { | |
| javaExecHandleBuilder.setSystemProperties(properties); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec systemProperties(Map<String, ?> properties) { | |
| javaExecHandleBuilder.systemProperties(properties); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec systemProperty(String name, Object value) { | |
| javaExecHandleBuilder.systemProperty(name, value); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| @InputFiles | |
| public FileCollection getBootstrapClasspath() { | |
| return javaExecHandleBuilder.getBootstrapClasspath(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setBootstrapClasspath(FileCollection classpath) { | |
| javaExecHandleBuilder.setBootstrapClasspath(classpath); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec bootstrapClasspath(Object... classpath) { | |
| javaExecHandleBuilder.bootstrapClasspath(classpath); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public String getMinHeapSize() { | |
| return javaExecHandleBuilder.getMinHeapSize(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setMinHeapSize(String heapSize) { | |
| javaExecHandleBuilder.setMinHeapSize(heapSize); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public String getDefaultCharacterEncoding() { | |
| return javaExecHandleBuilder.getDefaultCharacterEncoding(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setDefaultCharacterEncoding(String defaultCharacterEncoding) { | |
| javaExecHandleBuilder.setDefaultCharacterEncoding(defaultCharacterEncoding); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public String getMaxHeapSize() { | |
| return javaExecHandleBuilder.getMaxHeapSize(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setMaxHeapSize(String heapSize) { | |
| javaExecHandleBuilder.setMaxHeapSize(heapSize); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public boolean getEnableAssertions() { | |
| return javaExecHandleBuilder.getEnableAssertions(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setEnableAssertions(boolean enabled) { | |
| javaExecHandleBuilder.setEnableAssertions(enabled); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public boolean getDebug() { | |
| return javaExecHandleBuilder.getDebug(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| @Option(option = "debug-jvm", description = "Enable debugging for the process. The process is started suspended and listening on port 5005. [INCUBATING]") | |
| public void setDebug(boolean enabled) { | |
| javaExecHandleBuilder.setDebug(enabled); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public List<String> getArgs() { | |
| return javaExecHandleBuilder.getArgs(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setArgs(Iterable<?> applicationArgs) { | |
| javaExecHandleBuilder.setArgs(applicationArgs); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec args(Object... args) { | |
| javaExecHandleBuilder.args(args); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec args(Iterable<?> args) { | |
| javaExecHandleBuilder.args(args); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setClasspath(FileCollection classpath) { | |
| javaExecHandleBuilder.setClasspath(classpath); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec classpath(Object... paths) { | |
| javaExecHandleBuilder.classpath(paths); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| @InputFiles | |
| public FileCollection getClasspath() { | |
| return javaExecHandleBuilder.getClasspath(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec copyTo(JavaForkOptions options) { | |
| javaExecHandleBuilder.copyTo(options); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public String getExecutable() { | |
| return javaExecHandleBuilder.getExecutable(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setExecutable(Object executable) { | |
| javaExecHandleBuilder.setExecutable(executable); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec executable(Object executable) { | |
| javaExecHandleBuilder.executable(executable); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public File getWorkingDir() { | |
| return javaExecHandleBuilder.getWorkingDir(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setWorkingDir(Object dir) { | |
| javaExecHandleBuilder.setWorkingDir(dir); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec workingDir(Object dir) { | |
| javaExecHandleBuilder.workingDir(dir); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public Map<String, Object> getEnvironment() { | |
| return javaExecHandleBuilder.getEnvironment(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public void setEnvironment(Map<String, ?> environmentVariables) { | |
| javaExecHandleBuilder.setEnvironment(environmentVariables); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec environment(String name, Object value) { | |
| javaExecHandleBuilder.environment(name, value); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec environment(Map<String, ?> environmentVariables) { | |
| javaExecHandleBuilder.environment(environmentVariables); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec copyTo(ProcessForkOptions target) { | |
| javaExecHandleBuilder.copyTo(target); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setStandardInput(InputStream inputStream) { | |
| javaExecHandleBuilder.setStandardInput(inputStream); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public InputStream getStandardInput() { | |
| return javaExecHandleBuilder.getStandardInput(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setStandardOutput(OutputStream outputStream) { | |
| javaExecHandleBuilder.setStandardOutput(outputStream); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public OutputStream getStandardOutput() { | |
| return javaExecHandleBuilder.getStandardOutput(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setErrorOutput(OutputStream outputStream) { | |
| javaExecHandleBuilder.setErrorOutput(outputStream); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public OutputStream getErrorOutput() { | |
| return javaExecHandleBuilder.getErrorOutput(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public JarExec setIgnoreExitValue(boolean ignoreExitValue) { | |
| javaExecHandleBuilder.setIgnoreExitValue(ignoreExitValue); | |
| return this; | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public boolean isIgnoreExitValue() { | |
| return javaExecHandleBuilder.isIgnoreExitValue(); | |
| } | |
| /** | |
| * {@inheritDoc} | |
| */ | |
| public List<String> getCommandLine() { | |
| return javaExecHandleBuilder.getCommandLine(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment