Making a jar with no dependencies executable is relatively easy. You basically just need to specify in the MANIFEST
the main class to use. It can then be started with java -jar ExecutableJar.jar
, but most OS support double-click in this case.
Making a jar that depends on other jar executable is more tricky. You can specify the class path in the MANIFEST
, but it still means you need to copy more than one jar to distribute your app. Another way is to "pack" the depending jar in the main jar.
You can do all this with maven and the maven-assembly-plugin. Use the jar-with-dependencies
preconfigured descriptor.
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
The main class can be specified with something like:
<archive>
<manifest>
<mainClass>org.company.MyClass</mainClass>
</manifest>
</archive>
EDIT: A complete pom.xml
can be found in this question.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…