96e10104e4
A new command, jar, has been added to the CLI. The command can be used to create a self-contained executable JAR file from a CLI app. Basic usage is: spring jar <jar-name> <source-files> For example: spring jar my-app.jar *.groovy The resulting jar will contain the classes generated by compiling the source files, all of the application's dependencies, and entries on the application's classpath. By default a CLI application has the current working directory on its classpath. This can be overridden using the --classpath option. Any file that is referenced directly by the classpath is always included in the jar. Any file that is found a result of being contained within a directory that is on the classpath is subject to filtering to determine whether or not it should be included. The default includes are public/**, static/**, resources/**, META-INF/**, *. The default excludes are .*, repository/**, build/**, target/**. To be included in the jar, a file must match one of the includes and none of the excludes. The filters can be overridden using the --include and --exclude options. Closes #241 |
11 years ago | |
---|---|---|
.. | ||
src | 11 years ago | |
README.md | 11 years ago | |
pom.xml | 11 years ago |
README.md
Spring Boot - Loader Tools
The Spring Boot Loader Tools module provides support utilities to help when creating Spring Boot Loader compatible archives. This module is used by the various build system plugins that we provide.
Note: The quickest way to build a compatible archive is to use the spring-boot-maven-plugin or spring-boot-gradle-plugin.
Repackaging archives
To repackage an existing archive so that it becomes a self-contained executable archive
use org.springframework.boot.loader.tools.Repackager
. The Repackager
class takes a
single constructor argument that refers to an existing jar or war archive. Use one of the
two available repackage()
methods to either replace the original file or write to a new
destination. Various settings can also be configured on the repackager before it is
run.
Libraries
When repackaging an archive you can include references to dependency files using the
org.springframework.boot.loader.tools.Libraries
interface. We don't provide any
concrete implementations of Libraries
here as they are usually build system specific.
If your archive already includes libraries you can use Libraries.NONE
Finding a main class
If you don't use Repackager.setMainClass()
to specify a main class, the repackager will
use ASM to read class files and attempt to find a suitable class.
The first class with a public static void main(String[] args)
method will be used.
Searching is performed using a breadth first algorithm, with the assumption that the main
class will appear high in the package structure.
Example
Here is a typical example repackage:
Repackager repackager = new Repackager(sourceJarFile);
repackager.setBackupSource(false);
repackager.repackage(new Libraries() {
@Override
public void doWithLibraries(LibraryCallback callback) throws IOException {
// Build system specific implementation, callback for each dependency
// callback.library(nestedFile, LibraryScope.COMPILE);
}
});
Further Reading
For more information on how Spring Boot Loader archives work take a look at the spring-boot-loader module. If you want to see how we use this library the Maven and Gradle plugins are good place to start.