org.gradle.tooling
Interface BuildLauncher

All Superinterfaces:
LongRunningOperation

public interface BuildLauncher
extends LongRunningOperation

A BuildLauncher allows you to configure and execute a Gradle build.

Instances of BuildLauncher are not thread-safe. You use a BuildLauncher as follows:

Example:
 ProjectConnection connection = GradleConnector.newConnector()
    .forProjectDirectory(new File("someFolder"))
    .connect();

 try {
    BuildLauncher build = connection.newBuild();

    //select tasks to run:
    build.forTasks("clean", "test");

    //include some build arguments:
    build.withArguments("--no-search-upward", "-i", "--project-dir", "someProjectDir");

    //configure the standard input:
    build.setStandardInput(new ByteArrayInputStream("consume this!".getBytes()));

    //in case you want the build to use java different than default:
    build.setJavaHome(new File("/path/to/java"));

    //if your build needs crazy amounts of memory:
    build.setJvmArguments("-Xmx2048m", "-XX:MaxPermSize=512m");

    //if you want to listen to the progress events:
    ProgressListener listener = null; // use your implementation
    build.addProgressListener(listener);

    //kick the build off:
    build.run();
 } finally {
    connection.close();
 }
 

Since:
1.0-milestone-3

Method Summary
 BuildLauncher addProgressListener(ProgressListener listener)
          Adds a progress listener which will receive progress events as the operation runs.
 BuildLauncher forTasks(Iterable<? extends Task> tasks)
          Sets the tasks to be executed.
 BuildLauncher forTasks(String... tasks)
          Sets the tasks to be executed.
 BuildLauncher forTasks(Task... tasks)
          Sets the tasks to be executed.
 void run()
          Executes the build, blocking until it is complete.
 void run(ResultHandler<? super Void> handler)
          Launches the build.
 BuildLauncher setJavaHome(File javaHome)
          If the target Gradle version supports it you can use this setting to specify the Java home directory to use for the long running operation.
 BuildLauncher setJvmArguments(String... jvmArguments)
          If the target Gradle version supports it you can use this setting to specify the Java vm arguments to use for the long running operation.
 BuildLauncher setStandardError(OutputStream outputStream)
          Sets the OutputStream which should receive standard error logging generated while running the operation.
 BuildLauncher setStandardInput(InputStream inputStream)
          If the target Gradle version supports it you can use this setting to set the standard InputStream that will be used by builds.
 BuildLauncher setStandardOutput(OutputStream outputStream)
          Sets the OutputStream which should receive standard output logging generated while running the operation.
 BuildLauncher withArguments(String... arguments)
          Specify the command line build arguments.
 

Method Detail

forTasks

BuildLauncher forTasks(String... tasks)
Sets the tasks to be executed. If no tasks are specified, the project's default tasks are executed.

Parameters:
tasks - The paths of the tasks to be executed. Relative paths are evaluated relative to the project for which this launcher was created.
Returns:
this
Since:
1.0-milestone-3

forTasks

BuildLauncher forTasks(Task... tasks)
Sets the tasks to be executed. If no tasks are specified, the project's default tasks are executed.

Note that the supplied tasks do not necessarily need to belong to the project which this launcher was created for.

Parameters:
tasks - The tasks to be executed.
Returns:
this
Since:
1.0-milestone-3

forTasks

BuildLauncher forTasks(Iterable<? extends Task> tasks)
Sets the tasks to be executed. If no tasks are specified, the project's default tasks are executed.

Note that the supplied tasks do not necessarily need to belong to the project which this launcher was created for.

Parameters:
tasks - The tasks to be executed.
Returns:
this
Since:
1.0-milestone-3

withArguments

BuildLauncher withArguments(String... arguments)
Specify the command line build arguments. Useful mostly for running tasks via BuildLauncher.

Be aware that not all of the Gradle command line options are supported! Only the build arguments that configure the build execution are supported. They are modelled in the Gradle API via StartParameter. Examples of supported build arguments: '--info', '-u', '-p'. The command line instructions that are actually separate commands (like '-?' and '-v') are not supported. Some other instructions like '--daemon' are also not supported - the tooling API always runs with the daemon.

If an unknown or unsupported command line option is specified, UnsupportedBuildArgumentException will be thrown at the time the operation is executed via run() or ModelBuilder.get().

For the list of all Gradle command line options please refer to the user guide or take a look at the output of the 'gradle -?' command. Supported arguments are those modeled by StartParameter.

The arguments can potentially override some other settings you have configured. For example, the project directory or Gradle user home directory that are configured in the GradleConnector. Also, the task names configured by forTasks(String...) can be overridden if you happen to specify other tasks via the build arguments.

See the example in the docs for BuildLauncher

Specified by:
withArguments in interface LongRunningOperation
Parameters:
arguments - Gradle command line arguments
Returns:
this
Since:
1.0-rc-1

setStandardOutput

BuildLauncher setStandardOutput(OutputStream outputStream)
Sets the OutputStream which should receive standard output logging generated while running the operation. The default is to discard the output.

Specified by:
setStandardOutput in interface LongRunningOperation
Parameters:
outputStream - The output stream.
Returns:
this
Since:
1.0-milestone-3

setStandardError

BuildLauncher setStandardError(OutputStream outputStream)
Sets the OutputStream which should receive standard error logging generated while running the operation. The default is to discard the output.

Specified by:
setStandardError in interface LongRunningOperation
Parameters:
outputStream - The output stream.
Returns:
this
Since:
1.0-milestone-3

setStandardInput

BuildLauncher setStandardInput(InputStream inputStream)
If the target Gradle version supports it you can use this setting to set the standard InputStream that will be used by builds. Useful when the tooling api drives interactive builds.

If the target Gradle version does not support it the long running operation will fail eagerly with UnsupportedOperationConfigurationException when the operation is started.

If not configured or null passed the dummy input stream with zero bytes is used to avoid the build hanging problems.

Specified by:
setStandardInput in interface LongRunningOperation
Parameters:
inputStream - The input stream
Returns:
this
Since:
1.0-milestone-7

setJavaHome

BuildLauncher setJavaHome(File javaHome)
If the target Gradle version supports it you can use this setting to specify the Java home directory to use for the long running operation.

If the target Gradle version does not support it the long running operation will fail eagerly with UnsupportedOperationConfigurationException when the operation is started.

BuildEnvironment model contains information such as Java or Gradle environment. If you want to get hold of this information you can ask tooling API to build this model.

If not configured or null passed the sensible default will be used.

Specified by:
setJavaHome in interface LongRunningOperation
Parameters:
javaHome - to use for the Gradle process
Returns:
this
Since:
1.0-milestone-8

setJvmArguments

BuildLauncher setJvmArguments(String... jvmArguments)
If the target Gradle version supports it you can use this setting to specify the Java vm arguments to use for the long running operation.

If the target Gradle version does not support it the long running operation will fail eagerly with UnsupportedOperationConfigurationException when the operation is started.

BuildEnvironment model contains information such as Java or Gradle environment. If you want to get hold of this information you can ask tooling API to build this model.

If not configured, null an empty array passed then the reasonable default will be used.

Specified by:
setJvmArguments in interface LongRunningOperation
Parameters:
jvmArguments - to use for the Gradle process
Returns:
this
Since:
1.0-milestone-9

addProgressListener

BuildLauncher addProgressListener(ProgressListener listener)
Adds a progress listener which will receive progress events as the operation runs.

Specified by:
addProgressListener in interface LongRunningOperation
Parameters:
listener - The listener
Returns:
this
Since:
1.0-milestone-3

run

void run()
         throws GradleConnectionException,
                UnsupportedBuildArgumentException,
                IllegalStateException,
                BuildException,
                UnsupportedVersionException
Executes the build, blocking until it is complete.

Throws:
UnsupportedVersionException - When the target Gradle version does not support the features required for this build.
UnsupportedOperationConfigurationException - when you have configured the long running operation with a settings like: setStandardInput(java.io.InputStream), setJavaHome(java.io.File), setJvmArguments(String...) but those settings are not supported on the target Gradle.
BuildException - On some failure executing the Gradle build.
GradleConnectionException - On some other failure using the connection.
UnsupportedBuildArgumentException - When there is a problem with build arguments provided by withArguments(String...)
IllegalStateException - When the connection has been closed or is closing.
Since:
1.0-milestone-3

run

void run(ResultHandler<? super Void> handler)
         throws IllegalStateException
Launches the build. This method returns immediately, and the result is later passed to the given handler.

Parameters:
handler - The handler to supply the result to.
Throws:
IllegalStateException - When the connection has been closed or is closing.
Since:
1.0-milestone-3