Skip to content

Commit bff86f9

Browse files
authored
Detect shadow jar for run task (#26)
1 parent 9d0844b commit bff86f9

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

plugin-development/src/main/java/org/spongepowered/gradle/common/Constants.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ private Dependencies() {
4646
}
4747
}
4848

49+
public static final class Plugins {
50+
public static final String SHADOW_PLUGIN_ID = "com.github.johnrengelman.shadow";
51+
public static final String SHADOW_JAR_TASK_NAME = "shadowJar";
52+
53+
private Plugins() {
54+
}
55+
}
56+
4957
private Constants() {
5058
}
5159

plugin-development/src/main/java/org/spongepowered/gradle/plugin/SpongePluginGradle.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
2828
import org.gradle.api.Action;
29-
import org.gradle.api.NamedDomainObjectCollection;
3029
import org.gradle.api.NamedDomainObjectContainer;
3130
import org.gradle.api.NamedDomainObjectProvider;
3231
import org.gradle.api.Plugin;
@@ -38,7 +37,6 @@
3837
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
3938
import org.gradle.api.artifacts.result.ResolvedArtifactResult;
4039
import org.gradle.api.file.Directory;
41-
import org.gradle.api.file.DirectoryProperty;
4240
import org.gradle.api.file.FileCollection;
4341
import org.gradle.api.plugins.JavaLibraryPlugin;
4442
import org.gradle.api.plugins.JavaPlugin;
@@ -48,7 +46,7 @@
4846
import org.gradle.api.tasks.SourceSet;
4947
import org.gradle.api.tasks.SourceSetContainer;
5048
import org.gradle.api.tasks.TaskProvider;
51-
import org.gradle.jvm.tasks.Jar;
49+
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
5250
import org.gradle.process.CommandLineArgumentProvider;
5351
import org.spongepowered.gradle.common.Constants;
5452
import org.spongepowered.gradle.common.SpongePlatform;
@@ -221,13 +219,18 @@ public void execute(final Task a) {
221219
});
222220
});
223221

224-
this.project.getPlugins().withType(JavaPlugin.class, v -> {
225-
// TODO: Use shadow jar here if that plugin is applied
226-
final TaskProvider<?> jarTask = this.project.getTasks().named(JavaPlugin.JAR_TASK_NAME);
222+
this.project.afterEvaluate(p -> {
223+
final TaskProvider<AbstractArchiveTask> archiveTask;
224+
if (p.getPlugins().hasPlugin(Constants.Plugins.SHADOW_PLUGIN_ID)) {
225+
archiveTask = p.getTasks().named(Constants.Plugins.SHADOW_JAR_TASK_NAME, AbstractArchiveTask.class);
226+
} else {
227+
archiveTask = p.getTasks().named(JavaPlugin.JAR_TASK_NAME, AbstractArchiveTask.class);
228+
}
227229
runServer.configure(new Action<JavaExec>() {
228230
@Override
229231
public void execute(final JavaExec it) {
230-
it.classpath(jarTask);
232+
it.dependsOn(archiveTask);
233+
it.classpath(archiveTask.map(AbstractArchiveTask::getArchiveFile));
231234
}
232235
}); // TODO: is there a sensible way to run without the jar?
233236
});

0 commit comments

Comments
 (0)