You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
2.4 KiB
Markdown
53 lines
2.4 KiB
Markdown
# Spring Boot - Loader Tools
|
|
The Spring Boot Loader Tools module provides support utilities to help when creating
|
|
[Spring Boot Loader](../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](../spring-boot-maven-plugin) or
|
|
> [spring-boot-gradle-plugin](../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](http://asm.ow2.org/) 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:
|
|
|
|
```java
|
|
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](../spring-boot-loader) module. If you want to see how we use this
|
|
library the [Maven](../spring-boot-maven-plugin) and
|
|
[Gradle](../spring-boot-gradle-plugin) plugins are good place to start.
|