parent
2f3cf56f03
commit
58fc8f8c01
|
@ -175,10 +175,25 @@ class JarIntegrationTests extends AbstractArchiveIntegrationTests {
|
||||||
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-context")
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-context")
|
||||||
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-core")
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-core")
|
||||||
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-jcl")
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-jcl")
|
||||||
.doesNotHaveEntryWithName("BOOT-INF/lib/servlet-api-2.5.jar");
|
.doesNotHaveEntryWithNameStartingWith("BOOT-INF/lib/jakarta.servlet-api-");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestTemplate
|
||||||
|
void whenAnEntryIsExcludedWithPropertyItDoesNotAppearInTheRepackagedJar(MavenBuild mavenBuild) {
|
||||||
|
mavenBuild.project("jar")
|
||||||
|
.systemProperty("spring-boot.excludes", "jakarta.servlet:jakarta.servlet-api")
|
||||||
|
.goals("install")
|
||||||
|
.execute((project) -> {
|
||||||
|
File repackaged = new File(project, "target/jar-0.0.1.BUILD-SNAPSHOT.jar");
|
||||||
|
assertThat(jar(repackaged)).hasEntryWithNameStartingWith("BOOT-INF/classes/")
|
||||||
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-context")
|
||||||
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-core")
|
||||||
|
.hasEntryWithNameStartingWith("BOOT-INF/lib/spring-jcl")
|
||||||
|
.doesNotHaveEntryWithNameStartingWith("BOOT-INF/lib/jakarta.servlet-api-");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@TestTemplate
|
@TestTemplate
|
||||||
void whenAGroupIsExcludedNoEntriesInThatGroupAppearInTheRepackagedJar(MavenBuild mavenBuild) {
|
void whenAGroupIsExcludedNoEntriesInThatGroupAppearInTheRepackagedJar(MavenBuild mavenBuild) {
|
||||||
mavenBuild.project("jar-exclude-group").goals("install").execute((project) -> {
|
mavenBuild.project("jar-exclude-group").goals("install").execute((project) -> {
|
||||||
|
|
|
@ -82,7 +82,8 @@ public abstract class AbstractDependencyFilterMojo extends AbstractMojo {
|
||||||
/**
|
/**
|
||||||
* Collection of artifact definitions to exclude. The {@link Exclude} element defines
|
* Collection of artifact definitions to exclude. The {@link Exclude} element defines
|
||||||
* mandatory {@code groupId} and {@code artifactId} properties and an optional
|
* mandatory {@code groupId} and {@code artifactId} properties and an optional
|
||||||
* {@code classifier} property.
|
* {@code classifier} property. If passing in excludes as a property the syntax is
|
||||||
|
* <pre>-Dspring-boot.excludes=groupId1:artifactId1,groupId2:artifactId2:optional-qualifier</pre>
|
||||||
* @since 1.1.0
|
* @since 1.1.0
|
||||||
*/
|
*/
|
||||||
@Parameter(property = "spring-boot.excludes")
|
@Parameter(property = "spring-boot.excludes")
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package org.springframework.boot.maven;
|
package org.springframework.boot.maven;
|
||||||
|
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A model for a dependency to exclude.
|
* A model for a dependency to exclude.
|
||||||
*
|
*
|
||||||
|
@ -24,4 +26,17 @@ package org.springframework.boot.maven;
|
||||||
*/
|
*/
|
||||||
public class Exclude extends FilterableDependency {
|
public class Exclude extends FilterableDependency {
|
||||||
|
|
||||||
|
// Maven looks for this public method if giving excludes as property
|
||||||
|
// e.g. -Dspring-boot.excludes=myGroupId:myArtifactId:my-optional-classifier,foo:baz
|
||||||
|
public void set(String propertyInput) {
|
||||||
|
String[] parts = propertyInput.split(":");
|
||||||
|
Assert.isTrue(parts.length == 2 || parts.length == 3,
|
||||||
|
"Exclude must be in the form groupId:artifactId:optional-classifier");
|
||||||
|
setGroupId(parts[0]);
|
||||||
|
setArtifactId(parts[1]);
|
||||||
|
if (parts.length == 3) {
|
||||||
|
setClassifier(parts[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue