Executable JAR by maven
You can simply use
java -cp path-to-your-jar:path-to-your-lib your-full-main-class-name
to run the jar.
For example:
If you encounter "Failed to load Main-Class manifest attribute" problem, this is probably because you have no Main-Class attribute specified in the manifest file.
To create an executable JAR, one simply needs to set the main class that serves as the application entry point.
Main-Class: ca.i88.App
in the Manifest.txt when you "mvn clean install" or "mvn package". By this way this application's entry point is set.
Another plugin can do the same (Recommended):
java -cp path-to-your-jar:path-to-your-lib your-full-main-class-name
to run the jar.
For example:
java -cp /i88/ca/example.jar:/i88/ca/lib/* it.i88.ca.example.App
If you encounter "Failed to load Main-Class manifest attribute" problem, this is probably because you have no Main-Class attribute specified in the manifest file.
To create an executable JAR, one simply needs to set the main class that serves as the application entry point.
<properties>This will add
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>ca.i88.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Main-Class: ca.i88.App
in the Manifest.txt when you "mvn clean install" or "mvn package". By this way this application's entry point is set.
Another plugin can do the same (Recommended):
Add the
maven-shade-plugin
plugin and rebuild.The maven-shade-plugin will take artifacts (jars) produced by the package goal (produces customer code .jar), and created a standalone .jar that contains the compiled customer code, and the resolved dependencies from the
pom.xml
.Within Eclipse:
- Open the context (right-click) menu for the
pom.xml
file, choose Maven, and then choose Add Plugin. - In the Add Plugin window, type the following values:
- Group Id: org.apache.maven.plugins
- Artifact Id: maven-shade-plugin
- Version: 3.2.1
- Now build again.This time we will create the jar as before, and then use the
maven-shade-plugin
to pull in dependencies to make the standalone .jar.- Open the context (right-click) menu for the project, choose Run As, and then choose Maven build ....
- In the Edit Configuration windows, type
package shade:shade
in the Goals box. - Choose
Run
.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>ca.i88.App</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Comments
Post a Comment