-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
QuarkusGradleModelFactory.java
42 lines (34 loc) · 1.58 KB
/
QuarkusGradleModelFactory.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package io.quarkus.bootstrap.resolver;
import java.io.File;
import java.util.Collections;
import java.util.List;
import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.ModelBuilder;
import org.gradle.tooling.ProjectConnection;
import org.gradle.wrapper.GradleUserHomeLookup;
import io.quarkus.bootstrap.model.ApplicationModel;
public class QuarkusGradleModelFactory {
public static ApplicationModel create(File projectDir, String mode, String... tasks) {
return create(projectDir, mode, Collections.emptyList(), tasks);
}
public static ApplicationModel create(File projectDir, String mode, List<String> jvmArgs, String... tasks) {
try (ProjectConnection connection = GradleConnector.newConnector()
.forProjectDirectory(projectDir)
.useGradleUserHomeDir(GradleUserHomeLookup.gradleUserHome())
.connect()) {
return connection.action(new QuarkusModelBuildAction(mode)).forTasks(tasks).addJvmArguments(jvmArgs).run();
}
}
public static ApplicationModel createForTasks(File projectDir, String... tasks) {
try (ProjectConnection connection = GradleConnector.newConnector()
.forProjectDirectory(projectDir)
.useGradleUserHomeDir(GradleUserHomeLookup.gradleUserHome())
.connect()) {
final ModelBuilder<ApplicationModel> modelBuilder = connection.model(ApplicationModel.class);
if (tasks.length != 0) {
modelBuilder.forTasks(tasks);
}
return modelBuilder.get();
}
}
}