Only apply special handling of META-INF to jar files
The changes for gh-28562 attempted to align the Gradle plugin's handling of META-INF with the Maven plugin's behavior. Unfortunately, they want too far, applying the handling to both jar and war files when the Maven plugin only applies it to jar files. This commit reworks the changes so that they only apply to jar files. Closes gh-30026
This commit is contained in:
@@ -185,66 +185,6 @@ abstract class AbstractBootArchiveTests<T extends Jar & BootArchive> {
|
||||
}
|
||||
}
|
||||
|
||||
@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");
|
||||
|
||||
@@ -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.
|
||||
@@ -103,6 +103,66 @@ class BootJarTests extends AbstractBootArchiveTests<BootJar> {
|
||||
}
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
Reference in New Issue
Block a user