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.
spring-boot/spring-boot-tools/spring-boot-loader-tools
Andy Wilkinson b0c6d8060c Remove Git plugin from Spring Boot tools
The Git plugin was primarily being used to provide version information
that Boot's maven plugin can add into the MANIFEST.MF of the uber-jars
that it creates under the Spring-Boot-Commit-Id attribute.

This commit removes the Git plugin from Boot's own projects, but
leaves it in the spring-boot-starter-parent for use by Spring
Boot-based applications.

The attribute in the uber-jars' MANIFEST.MF has been replaced with a
Spring-Boot-Version attribute. The value of this attribute is the
implementation version of Repackager class's package.
11 years ago
..
src Remove Git plugin from Spring Boot tools 11 years ago
README.md Documentation updates 11 years ago
pom.xml Back to SNAPSHOT for dev 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.