Commit 6565ff61 authored by Andy Wilkinson's avatar Andy Wilkinson

Clarify documentation on using a Spring Boot app as a dependency

Closes gh-6812
parent 155cfb18
...@@ -373,10 +373,10 @@ want the other Boot features but not this one) ...@@ -373,10 +373,10 @@ want the other Boot features but not this one)
|`classifier` |`classifier`
|A file name segment (before the extension) to add to the archive, so that the original is |A file name segment (before the extension) to add to the archive, so that the original is
preserved in its original location. Defaults to null in which case the archive is preserved in its original location. Defaults to `null` in which case the archive is
repackaged in place. The default is convenient for many purposes, but if you want to use repackaged in place. The default is convenient for many purposes, but if you want to use
the original jar as a dependency in another project, it's best to use an extension to the original jar as a dependency in another project you must use a classifier to define
define the executable archive. the executable archive.
|`withJarTask` |`withJarTask`
|The name or value of the `Jar` task (defaults to all tasks of type `Jar`) which is used |The name or value of the `Jar` task (defaults to all tasks of type `Jar`) which is used
......
...@@ -2643,14 +2643,24 @@ details. ...@@ -2643,14 +2643,24 @@ details.
[[howto-create-an-additional-executable-jar]] [[howto-create-an-additional-executable-jar]]
=== Create an additional executable JAR === Use a Spring Boot application as a dependency
If you want to use your project as a library jar for other projects to depend on, and in Like a war file, a Spring Boot application is not intended to be used as a dependency. If
addition have an executable (e.g. demo) version of it, you will want to configure the your application contains classes that you want to share with other projects, the
build in a slightly different way. recommended approach is to move that code into a separate module. The separate module can
then be depended upon by your application and other projects.
For Maven the normal JAR plugin and the Spring Boot plugin both have a '`classifier`' If you cannot rearrange your code as recommended above, Spring Boot's Maven and Gradle
configuration that you can add to create an additional JAR. Example (using the Spring plugins must be configured to produce a separate artifact that is suitable for use as a
Boot Starter Parent to manage the plugin versions and other configuration defaults): dependency. The executable archive cannot be used as a dependency as the
<<appendix-executable-jar-format.adoc#executable-jar-jar-file-structure,exectuable jar
format>> packages application classes in `BOOT-INF/classes`. This means
that they cannot be found when the executable jar is used as a dependency.
To produce the two artifacts, one that can be used as a dependency and one that is
executable, a classifier must be specified. This classifier is applied to the name of the
executable archive, leaving the default archive for use as dependency.
To configure a classifier of `exec` in Maven, the following configuration can be used:
[source,xml,indent=0,subs="verbatim,quotes,attributes"] [source,xml,indent=0,subs="verbatim,quotes,attributes"]
---- ----
...@@ -2667,10 +2677,7 @@ Boot Starter Parent to manage the plugin versions and other configuration defaul ...@@ -2667,10 +2677,7 @@ Boot Starter Parent to manage the plugin versions and other configuration defaul
</build> </build>
---- ----
Two jars are produced, the default one, and an executable one using the Boot plugin with And when using Gradle, the following configuration can be used:
classifier '`exec`'.
For Gradle users the steps are similar. Example:
[source,groovy,indent=0,subs="verbatim,attributes"] [source,groovy,indent=0,subs="verbatim,attributes"]
---- ----
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment