T
- The type of model to buildpublic interface ModelBuilder<T> extends LongRunningOperation
ModelBuilder
allows you to fetch a snapshot of some model for a project or a build.
Instances of ModelBuilder
are not thread-safe.
You use a ModelBuilder
as follows:
ModelBuilder
by calling ProjectConnection.model(Class)
.
get()
or get(ResultHandler)
to build the model.
ProjectConnection connection = GradleConnector.newConnector() .forProjectDirectory(new File("someFolder")) .connect(); try { ModelBuilder<GradleProject> builder = connection.model(GradleProject.class); //if you use a different than usual build file name: builder.withArguments("--build-file", "theBuild.gradle"); //configure the standard input in case your build is interactive: builder.setStandardInput(new ByteArrayInputStream("consume this!".getBytes())); //if you want to listen to the progress events: ProgressListener listener = null; // use your implementation builder.addProgressListener(listener); //get the model: GradleProject project = builder.get(); //query the model for information: System.out.println("Available tasks: " + project.getTasks()); } finally { connection.close(); }
Modifier and Type | Method and Description |
---|---|
ModelBuilder<T> |
addProgressListener(ProgressListener listener)
Adds a progress listener which will receive progress events as the operation runs.
|
ModelBuilder<T> |
forTasks(String... tasks)
Specifies the tasks to execute before building the model.
|
T |
get()
Fetch the model, blocking until it is available.
|
void |
get(ResultHandler<? super T> handler)
Starts fetching the model, passing the result to the given handler when complete.
|
ModelBuilder<T> |
setJavaHome(File javaHome)
Specifies the Java home directory to use for this operation.
|
ModelBuilder<T> |
setJvmArguments(String... jvmArguments)
Specifies the Java VM arguments to use for this operation.
|
ModelBuilder<T> |
setStandardError(OutputStream outputStream)
Sets the
OutputStream which should receive standard error logging generated while running the operation. |
ModelBuilder<T> |
setStandardInput(InputStream inputStream)
Sets the
InputStream that will be used as standard input for this operation. |
ModelBuilder<T> |
setStandardOutput(OutputStream outputStream)
Sets the
OutputStream which should receive standard output logging generated while running the operation. |
ModelBuilder<T> |
withArguments(String... arguments)
Specify the command line build arguments.
|
ModelBuilder<T> withArguments(String... arguments)
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 BuildLauncher.run()
or 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. Majority of arguments modeled by
StartParameter
are supported.
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 BuildLauncher.forTasks(String...)
can be overridden
if you happen to specify other tasks via the build arguments.
See the example in the docs for BuildLauncher
withArguments
in interface LongRunningOperation
arguments
- Gradle command line argumentsModelBuilder<T> setStandardOutput(OutputStream outputStream)
OutputStream
which should receive standard output logging generated while running the operation.
The default is to discard the output.setStandardOutput
in interface LongRunningOperation
outputStream
- The output stream. The system default character encoding will be used to encode characters written to this stream.ModelBuilder<T> setStandardError(OutputStream outputStream)
OutputStream
which should receive standard error logging generated while running the operation.
The default is to discard the output.setStandardError
in interface LongRunningOperation
outputStream
- The output stream. The system default character encoding will be used to encode characters written to this stream.ModelBuilder<T> setStandardInput(InputStream inputStream)
InputStream
that will be used as standard input for this operation.
Defaults to an empty input stream.
If the target Gradle version does not support it the long running operation will fail with
UnsupportedOperationConfigurationException
when the operation is started.
setStandardInput
in interface LongRunningOperation
inputStream
- The input streamModelBuilder<T> setJavaHome(File javaHome)
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.
setJavaHome
in interface LongRunningOperation
javaHome
- to use for the Gradle processModelBuilder<T> setJvmArguments(String... jvmArguments)
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.
setJvmArguments
in interface LongRunningOperation
jvmArguments
- to use for the Gradle processModelBuilder<T> addProgressListener(ProgressListener listener)
addProgressListener
in interface LongRunningOperation
listener
- The listener@Incubating ModelBuilder<T> forTasks(String... tasks)
tasks
- The paths of the tasks to be executed. Relative paths are evaluated relative to the project for which this launcher was created.T get() throws GradleConnectionException, UnsupportedVersionException, UnknownModelException, UnsupportedOperationConfigurationException, BuildException, IllegalStateException, UnsupportedBuildArgumentException
UnsupportedVersionException
- When the target Gradle version does not support building models.UnknownModelException
- When the target Gradle version or build does not support the requested model.UnsupportedOperationConfigurationException
- When the target Gradle version does not support some requested configuration option such as
setStandardInput(java.io.InputStream)
, setJavaHome(java.io.File)
,
setJvmArguments(String...)
.UnsupportedBuildArgumentException
- When there is a problem with build arguments provided by withArguments(String...)
.BuildException
- On some failure executing the Gradle build.GradleConnectionException
- On some other failure using the connection.IllegalStateException
- When the connection has been closed or is closing.void get(ResultHandler<? super T> handler) throws IllegalStateException
ResultHandler.onComplete(Object)
method.
If the operation fails, the handler's ResultHandler.onFailure(GradleConnectionException)
method is called with the appropriate exception. See get()
for a description of the various exceptions that the operation may fail with.
handler
- The handler to supply the result to.IllegalStateException
- When the connection has been closed or is closing.