Skip to content

Commit

Permalink
Merge branch '2.5.x' into 2.6.x
Browse files Browse the repository at this point in the history
Closes gh-30036
  • Loading branch information
wilkinsona committed Mar 2, 2022
2 parents 8a4a639 + 4073cf8 commit ea729fc
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 74 deletions.
Expand Up @@ -179,19 +179,10 @@ private boolean isZip(InputStream inputStream) throws IOException {
}

void moveModuleInfoToRoot(CopySpec spec) {
spec.filesMatching("module-info.class", BootArchiveSupport::moveToRoot);
spec.filesMatching("module-info.class", this::moveToRoot);
}

void moveMetaInfToRoot(CopySpec spec) {
spec.eachFile((file) -> {
String path = file.getRelativeSourcePath().getPathString();
if (path.startsWith("META-INF/") && !path.equals("META-INF/aop.xml") && !path.endsWith(".kotlin_module")) {
moveToRoot(file);
}
});
}

private static void moveToRoot(FileCopyDetails details) {
void moveToRoot(FileCopyDetails details) {
details.setRelativePath(details.getRelativeSourcePath());
}

Expand Down
Expand Up @@ -92,7 +92,7 @@ private void configureBootInfSpec(CopySpec bootInfSpec) {
bootInfSpec.into("classes", fromCallTo(this::classpathDirectories));
bootInfSpec.into("lib", fromCallTo(this::classpathFiles)).eachFile(this.support::excludeNonZipFiles);
this.support.moveModuleInfoToRoot(bootInfSpec);
this.support.moveMetaInfToRoot(bootInfSpec);
moveMetaInfToRoot(bootInfSpec);
}

private Iterable<File> classpathDirectories() {
Expand All @@ -107,6 +107,15 @@ private Iterable<File> classpathEntries(Spec<File> filter) {
return (this.classpath != null) ? this.classpath.filter(filter) : Collections.emptyList();
}

private void moveMetaInfToRoot(CopySpec spec) {
spec.eachFile((file) -> {
String path = file.getRelativeSourcePath().getPathString();
if (path.startsWith("META-INF/") && !path.equals("META-INF/aop.xml") && !path.endsWith(".kotlin_module")) {
this.support.moveToRoot(file);
}
});
}

@Override
public void copy() {
this.support.configureManifest(getManifest(), getMainClass().get(), CLASSES_DIRECTORY, LIB_DIRECTORY,
Expand Down
Expand Up @@ -74,7 +74,6 @@ public BootWar() {
this.mainClass = project.getObjects().property(String.class);
getWebInf().into("lib-provided", fromCallTo(this::getProvidedLibFiles));
this.support.moveModuleInfoToRoot(getRootSpec());
this.support.moveMetaInfToRoot(getRootSpec());
getRootSpec().eachFile(this.support::excludeNonZipLibraryFiles);
project.getConfigurations().all((configuration) -> {
ResolvableDependencies incoming = configuration.getIncoming();
Expand Down
Expand Up @@ -185,66 +185,6 @@ void moduleInfoClassIsPackagedInTheRootOfTheArchive() throws IOException {
}
}

@Test
void metaInfEntryIsPackagedInTheRootOfTheArchive() throws IOException {
this.task.getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File metaInfEntry = new File(classpathDirectory, "META-INF/test");
metaInfEntry.getParentFile().mkdirs();
metaInfEntry.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
this.task.classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(this.task.getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry(this.classesPath + "com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry(this.classesPath + "META-INF/test")).isNull();
assertThat(jarFile.getEntry("META-INF/test")).isNotNull();
}
}

@Test
void aopXmlIsPackagedBeneathClassesDirectory() throws IOException {
this.task.getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File aopXml = new File(classpathDirectory, "META-INF/aop.xml");
aopXml.getParentFile().mkdirs();
aopXml.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
this.task.classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(this.task.getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry(this.classesPath + "com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry(this.classesPath + "META-INF/aop.xml")).isNotNull();
assertThat(jarFile.getEntry("META-INF/aop.xml")).isNull();
}
}

@Test
void kotlinModuleIsPackagedBeneathClassesDirectory() throws IOException {
this.task.getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File kotlinModule = new File(classpathDirectory, "META-INF/example.kotlin_module");
kotlinModule.getParentFile().mkdirs();
kotlinModule.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
this.task.classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(this.task.getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry(this.classesPath + "com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry(this.classesPath + "META-INF/example.kotlin_module")).isNotNull();
assertThat(jarFile.getEntry("META-INF/example.kotlin_module")).isNull();
}
}

@Test
void classpathCanBeSetUsingAFileCollection() throws IOException {
this.task.getMainClass().set("com.example.Main");
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2021 the original author or authors.
* Copyright 2012-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -103,6 +103,66 @@ void classpathIndexPointsToBootInfLibs() throws IOException {
}
}

@Test
void metaInfEntryIsPackagedInTheRootOfTheArchive() throws IOException {
getTask().getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File metaInfEntry = new File(classpathDirectory, "META-INF/test");
metaInfEntry.getParentFile().mkdirs();
metaInfEntry.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
getTask().classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(getTask().getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry("BOOT-INF/classes/com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry("BOOT-INF/classes/META-INF/test")).isNull();
assertThat(jarFile.getEntry("META-INF/test")).isNotNull();
}
}

@Test
void aopXmlIsPackagedBeneathClassesDirectory() throws IOException {
getTask().getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File aopXml = new File(classpathDirectory, "META-INF/aop.xml");
aopXml.getParentFile().mkdirs();
aopXml.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
getTask().classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(getTask().getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry("BOOT-INF/classes/com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry("BOOT-INF/classes/META-INF/aop.xml")).isNotNull();
assertThat(jarFile.getEntry("META-INF/aop.xml")).isNull();
}
}

@Test
void kotlinModuleIsPackagedBeneathClassesDirectory() throws IOException {
getTask().getMainClass().set("com.example.Main");
File classpathDirectory = new File(this.temp, "classes");
File kotlinModule = new File(classpathDirectory, "META-INF/example.kotlin_module");
kotlinModule.getParentFile().mkdirs();
kotlinModule.createNewFile();
File applicationClass = new File(classpathDirectory, "com/example/Application.class");
applicationClass.getParentFile().mkdirs();
applicationClass.createNewFile();
getTask().classpath(classpathDirectory);
executeTask();
try (JarFile jarFile = new JarFile(getTask().getArchiveFile().get().getAsFile())) {
assertThat(jarFile.getEntry("BOOT-INF/classes/com/example/Application.class")).isNotNull();
assertThat(jarFile.getEntry("com/example/Application.class")).isNull();
assertThat(jarFile.getEntry("BOOT-INF/classes/META-INF/example.kotlin_module")).isNotNull();
assertThat(jarFile.getEntry("META-INF/example.kotlin_module")).isNull();
}
}

private File createPopulatedJar() throws IOException {
addContent();
executeTask();
Expand Down

0 comments on commit ea729fc

Please sign in to comment.