Fix issues involving projects with modules that contain no java classes (#135)

Dependencies on a compileClasspath configuration, and
encountering nonexistant paths in the classpath prevented remapping from
completing successfully.

Additionally, adds the output of remapJar as an artifact before the task
executes to resolve a conflict with the signing plugin
This commit is contained in:
zml 2019-10-22 12:29:25 -07:00 committed by Mark J
parent 13ae0ae263
commit ba426c04fb
3 changed files with 7 additions and 4 deletions

View file

@ -339,8 +339,8 @@ public class AbstractPlugin implements Plugin<Project> {
extension.addUnmappedMod(jarTask.getArchivePath().toPath());
remapJarTask.getAddNestedDependencies().set(true);
remapJarTask.doLast(task -> project1.getArtifacts().add("archives", remapJarTask.getArchivePath()));
remapJarTask.dependsOn(project1.getTasks().getByName("jar"));
project1.getArtifacts().add("archives", remapJarTask);
remapJarTask.dependsOn(jarTask);
project1.getTasks().getByName("build").dependsOn(remapJarTask);
Map<Project, Set<Task>> taskMap = project.getAllTasks(true);

View file

@ -196,7 +196,10 @@ public class LoomGradleExtension {
return recurseProjects((p) -> {
List<Configuration> configs = new ArrayList<>();
// check compile classpath first
configs.add(p.getConfigurations().getByName("compileClasspath"));
Configuration possibleCompileClasspath = p.getConfigurations().findByName("compileClasspath");
if (possibleCompileClasspath != null) {
configs.add(possibleCompileClasspath);
}
// failing that, buildscript
configs.addAll(p.getBuildscript().getConfigurations());

View file

@ -78,7 +78,7 @@ public class RemapJarTask extends Jar {
Set<File> classpathFiles = new LinkedHashSet<>(
project.getConfigurations().getByName("compileClasspath").getFiles()
);
Path[] classpath = classpathFiles.stream().map(File::toPath).filter((p) -> !input.equals(p)).toArray(Path[]::new);
Path[] classpath = classpathFiles.stream().map(File::toPath).filter((p) -> !input.equals(p) && Files.exists(p)).toArray(Path[]::new);
File mixinMapFile = mappingsProvider.MAPPINGS_MIXIN_EXPORT;
Path mixinMapPath = mixinMapFile.toPath();