There is an introductory blog post at http://skife.org/java/unix/2011/06/20/really_executable_jars.html
To use it, add a plugin to your pom like:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.Main</mainClass>
</transformer>
</transformers>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.skife.maven</groupId>
<artifactId>really-executable-jar-maven-plugin</artifactId>
<version>2.1.0</version>
<configuration>
<flags>-Xmx1G</flags>
<programFile>nifty-executable</programFile>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>really-executable-jar</goal>
</goals>
</execution>
</executions>
</plugin>
Changes:
2.1.1 - Overwrite existing files (@dkfellows)
2.1.0 - use zip-prefixer instead of rebuilding JAR (@klausbrunner)
- improve handling of multi-artifact builds (@klausbrunner)
- add inputFile parameter to select any file (@klausbrunner)
- add basic integration testing (@klausbrunner)
- require JDK 11+ to build (plugin still targets JDK 8)
2.0.0 - support ZIP64 format
- require Java 8, drop support for JDK7
- support packaging other file formats than jars
1.4.0 - require Java 7, change code to use JDK7 APIs
- Support Windows
- Don't suppress errors
1.3.0 - add helpmojo
- allow attachment of executable instead of unconditional replacement
- make extension configurable
- allow script replacement in the resulting executable
1.2.0 - never released
1.1.0 - If programFile is set, do not make the base artifact (the
.jar) executable, just the programFile one.
1.0.0 - Stable
$ claude mcp add really-executable-jars-maven-plugin \
-- python -m otcore.mcp_server <graph>