Skip to content

Commit 8d865a8

Browse files
committed
Allow updating/replacing the classpath of ToolExecBase tasks
1 parent 28ed7cd commit 8d865a8

File tree

1 file changed

+29
-3
lines changed
  • gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared

1 file changed

+29
-3
lines changed

gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/ToolExecBase.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
88
import org.gradle.api.DefaultTask;
99
import org.gradle.api.Transformer;
10+
import org.gradle.api.artifacts.Dependency;
11+
import org.gradle.api.artifacts.dsl.DependencyFactory;
1012
import org.gradle.api.file.ConfigurableFileCollection;
1113
import org.gradle.api.file.DirectoryProperty;
1214
import org.gradle.api.file.FileSystemLocation;
@@ -19,6 +21,7 @@
1921
import org.gradle.api.provider.ListProperty;
2022
import org.gradle.api.provider.Property;
2123
import org.gradle.api.provider.Provider;
24+
import org.gradle.api.provider.ProviderConvertible;
2225
import org.gradle.api.provider.ProviderFactory;
2326
import org.gradle.api.tasks.Classpath;
2427
import org.gradle.api.tasks.Console;
@@ -30,6 +33,7 @@
3033
import org.gradle.api.tasks.Optional;
3134
import org.gradle.api.tasks.OutputFile;
3235
import org.gradle.api.tasks.TaskAction;
36+
import org.gradle.internal.logging.StandardOutputCapture;
3337
import org.gradle.jvm.toolchain.JavaLanguageVersion;
3438
import org.gradle.jvm.toolchain.JavaLauncher;
3539
import org.gradle.jvm.toolchain.JavaToolchainService;
@@ -75,11 +79,11 @@ public abstract class ToolExecBase<P extends EnhancedProblems> extends DefaultTa
7579
}
7680

7781
//region JavaExec
78-
protected abstract @InputFiles @Classpath ConfigurableFileCollection getClasspath();
82+
public abstract @InputFiles @Classpath ConfigurableFileCollection getClasspath();
7983

80-
protected abstract @Input @Optional Property<String> getMainClass();
84+
public abstract @Input @Optional Property<String> getMainClass();
8185

82-
protected abstract @Nested Property<JavaLauncher> getJavaLauncher();
86+
public abstract @Nested Property<JavaLauncher> getJavaLauncher();
8387

8488
protected abstract @Nested Property<JavaLauncher> getToolchainLauncher();
8589

@@ -107,6 +111,8 @@ public abstract class ToolExecBase<P extends EnhancedProblems> extends DefaultTa
107111

108112
protected abstract @Inject ExecOperations getExecOperations();
109113

114+
protected abstract @Inject DependencyFactory getDependencies();
115+
110116
protected abstract @Inject JavaToolchainService getJavaToolchains();
111117

112118
/// Creates a new task instance using the given types and tool information.
@@ -141,6 +147,26 @@ protected ToolExecBase(Tool tool) {
141147
this.getLogFile().convention(this.getDefaultLogFile());
142148
}
143149

150+
public final void using(CharSequence dependency) {
151+
this.using(getDependencies().create(dependency));
152+
}
153+
154+
public final void using(Provider<? extends Dependency> dependency) {
155+
this.getClasspath().setFrom(
156+
getProject().getConfigurations().detachedConfiguration().withDependencies(d -> d.addLater(dependency))
157+
);
158+
}
159+
160+
public final void using(ProviderConvertible<? extends Dependency> dependency) {
161+
this.using(dependency.asProvider());
162+
}
163+
164+
public final void using(Dependency dependency) {
165+
this.getClasspath().setFrom(
166+
getProject().getConfigurations().detachedConfiguration(dependency)
167+
);
168+
}
169+
144170
/// The enhanced problems instance to use for this task.
145171
///
146172
/// @return The enhanced problems

0 commit comments

Comments
 (0)