@@ -2643,14 +2643,24 @@ details.
2643
2643
2644
2644
2645
2645
[[howto-create-an-additional-executable-jar]]
2646
- === Create an additional executable JAR
2647
- If you want to use your project as a library jar for other projects to depend on, and in
2648
- addition have an executable (e.g. demo) version of it, you will want to configure the
2649
- build in a slightly different way.
2646
+ === Use a Spring Boot application as a dependency
2647
+ Like a war file, a Spring Boot application is not intended to be used as a dependency. If
2648
+ your application contains classes that you want to share with other projects, the
2649
+ recommended approach is to move that code into a separate module. The separate module can
2650
+ then be depended upon by your application and other projects.
2650
2651
2651
- For Maven the normal JAR plugin and the Spring Boot plugin both have a '`classifier`'
2652
- configuration that you can add to create an additional JAR. Example (using the Spring
2653
- Boot Starter Parent to manage the plugin versions and other configuration defaults):
2652
+ If you cannot rearrange your code as recommended above, Spring Boot's Maven and Gradle
2653
+ plugins must be configured to produce a separate artifact that is suitable for use as a
2654
+ dependency. The executable archive cannot be used as a dependency as the
2655
+ <<appendix-executable-jar-format.adoc#executable-jar-jar-file-structure,exectuable jar
2656
+ format>> packages application classes in `BOOT-INF/classes`. This means
2657
+ that they cannot be found when the executable jar is used as a dependency.
2658
+
2659
+ To produce the two artifacts, one that can be used as a dependency and one that is
2660
+ executable, a classifier must be specified. This classifier is applied to the name of the
2661
+ executable archive, leaving the default archive for use as dependency.
2662
+
2663
+ To configure a classifier of `exec` in Maven, the following configuration can be used:
2654
2664
2655
2665
[source,xml,indent=0,subs="verbatim,quotes,attributes"]
2656
2666
----
@@ -2667,10 +2677,7 @@ Boot Starter Parent to manage the plugin versions and other configuration defaul
2667
2677
</build>
2668
2678
----
2669
2679
2670
- Two jars are produced, the default one, and an executable one using the Boot plugin with
2671
- classifier '`exec`'.
2672
-
2673
- For Gradle users the steps are similar. Example:
2680
+ And when using Gradle, the following configuration can be used:
2674
2681
2675
2682
[source,groovy,indent=0,subs="verbatim,attributes"]
2676
2683
----
0 commit comments