Put module deps in app layer and make customization easier
Previously, when building a layered jar with Maven, dependencies on modules in the same build were treated the same as any other dependency, being included in the dependencies or snapshot dependencies layer based on their version. This commit updates the default layering when using Maven to include dependencies on modules in the same build in the application layer by default. The XML schema has also been updated to allow the layer to be customized using new <includeModuleDependencies/> and <excludeModuleDependencies/> elements rather than relying on including and excluding them via a group:artifact:version pattern. Closes gh-23463
This commit is contained in:
@@ -304,12 +304,13 @@ class JarIntegrationTests extends AbstractArchiveIntegrationTests {
|
||||
.hasEntryWithNameStartingWith("BOOT-INF/lib/jar-release")
|
||||
.hasEntryWithNameStartingWith("BOOT-INF/lib/jar-snapshot").hasEntryWithNameStartingWith(
|
||||
"BOOT-INF/lib/" + JarModeLibrary.LAYER_TOOLS.getCoordinates().getArtifactId());
|
||||
try {
|
||||
try (JarFile jarFile = new JarFile(repackaged)) {
|
||||
Map<String, List<String>> layerIndex = readLayerIndex(jarFile);
|
||||
assertThat(layerIndex.keySet()).containsExactly("dependencies", "spring-boot-loader",
|
||||
"snapshot-dependencies", "application");
|
||||
}
|
||||
try (JarFile jarFile = new JarFile(repackaged)) {
|
||||
Map<String, List<String>> layerIndex = readLayerIndex(jarFile);
|
||||
assertThat(layerIndex.keySet()).containsExactly("dependencies", "spring-boot-loader",
|
||||
"snapshot-dependencies", "application");
|
||||
assertThat(layerIndex.get("application")).contains("BOOT-INF/lib/jar-release-0.0.1.RELEASE.jar",
|
||||
"BOOT-INF/lib/jar-snapshot-0.0.1.BUILD-SNAPSHOT.jar");
|
||||
assertThat(layerIndex.get("dependencies")).contains("BOOT-INF/lib/log4j-api-2.12.1.jar");
|
||||
}
|
||||
catch (IOException ex) {
|
||||
}
|
||||
@@ -351,6 +352,11 @@ class JarIntegrationTests extends AbstractArchiveIntegrationTests {
|
||||
Map<String, List<String>> layerIndex = readLayerIndex(jarFile);
|
||||
assertThat(layerIndex.keySet()).containsExactly("my-dependencies-name", "snapshot-dependencies",
|
||||
"configuration", "application");
|
||||
assertThat(layerIndex.get("application"))
|
||||
.contains("BOOT-INF/lib/jar-release-0.0.1.RELEASE.jar",
|
||||
"BOOT-INF/lib/jar-snapshot-0.0.1.BUILD-SNAPSHOT.jar",
|
||||
"BOOT-INF/lib/jar-classifier-0.0.1-bravo.jar")
|
||||
.doesNotContain("BOOT-INF/lib/jar-classifier-0.0.1-alpha.jar");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -170,6 +170,7 @@ class MavenBuild {
|
||||
request.setUserSettingsFile(new File(this.temp, "settings.xml"));
|
||||
request.setUpdateSnapshots(true);
|
||||
request.setBatchMode(true);
|
||||
// request.setMavenOpts("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000");
|
||||
File target = new File(this.temp, "target");
|
||||
target.mkdirs();
|
||||
if (this.preparation != null) {
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.springframework.boot.maven.it</groupId>
|
||||
<artifactId>jar-classifier</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>jar</name>
|
||||
<description>Classifier Jar dependency</description>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>alpha</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<classifier>alpha</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>bravo</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<classifier>bravo</classifier>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -43,5 +43,16 @@
|
||||
<artifactId>jar-release</artifactId>
|
||||
<version>0.0.1.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot.maven.it</groupId>
|
||||
<artifactId>jar-classifier</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<classifier>bravo</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>@log4j2.version@</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<layers xmlns="http://www.springframework.org/schema/boot/layers"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/boot/layers
|
||||
https://www.springframework.org/schema/layers/layers-2.3.xsd">
|
||||
https://www.springframework.org/schema/layers/layers-2.4.xsd">
|
||||
<application>
|
||||
<into layer="configuration">
|
||||
<include>**/application*.*</include>
|
||||
@@ -9,6 +9,9 @@
|
||||
<into layer="application" />
|
||||
</application>
|
||||
<dependencies>
|
||||
<into layer="application">
|
||||
<includeModuleDependencies />
|
||||
</into>
|
||||
<into layer="snapshot-dependencies">
|
||||
<include>*:*:*-SNAPSHOT</include>
|
||||
</into>
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
<maven.compiler.target>@java.version@</maven.compiler.target>
|
||||
</properties>
|
||||
<modules>
|
||||
<module>jar-snapshot</module>
|
||||
<module>jar-classifier</module>
|
||||
<module>jar-release</module>
|
||||
<module>jar-snapshot</module>
|
||||
<module>jar</module>
|
||||
</modules>
|
||||
</project>
|
||||
|
||||
@@ -27,6 +27,11 @@
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>@log4j2.version@</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot.maven.it</groupId>
|
||||
<artifactId>jar-snapshot</artifactId>
|
||||
|
||||
Reference in New Issue
Block a user