By default, both the repackage
and the run
goals will include any provided
dependencies that are defined in the project. A Spring Boot project should consider provided
dependencies as container dependencies that are required to run the application.
Some of these dependencies may not be required at all and should be excluded from the executable jar. For consistency, they should not be present either when running the application.
There are two ways one can exclude a dependency from being packaged/used at runtime
groupId
and artifactId
(optionally with a classifier
if needed)groupId
The following excludes com.foo:bar
(and only that artifact)
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.2.RELEASE</version> <configuration> <excludes> <exclude> <groupId>com.foo</groupId> <artifactId>bar</artifactId> </exclude> </excludes> </configuration> ... </plugin> ... </plugins> ... </build> ... </project>
This example excludes any artifact belonging to the com.foo
group
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.2.RELEASE</version> <configuration> <excludeGroupIds>com.foo</excludeGroupIds> </configuration> ... </plugin> ... </plugins> ... </build> ... </project>