I am trying to create an executable jar (using Maven) which contains the project class and this is the manifest file Dependency is the entry for the main class and class path entry which indicates the dependency packaged in the root of the jar; Something like this:
Manifest file:
.... Main category: com.acme.MainClass class-path: dependecy1.jar dependecy2.jar .....
Jar:
Jar-Route | - .... | - com / acme /../*. Class | - Dependency 1 .jar `- Dependency .2.jor
Maven-Shade-plugin but dependencies have been unpacked for creating a manifest file and creating" Uber "Jar and using my Jar Classes have been added in the form of
Actually, I did not check that maven-shade-plugin
is absolutely (Or any other plug-in) because everything has been built to make megazar or uberjar in Maven 2. You just have to use maven-assembly-plugin with predefined jar-of-dependency
descriptors.
To customize the manifest: just add this snippet to your and the following command will generate your uberjar: But, again, this is to open the default behavior dependency of the descriptor (e.g. Maven Shade-Plugin). To be honest, I do not find why this is a problem, but if you really do not want it, you can use your own custom assembly descriptor. To do this, first, create your assembly statement, let's assume that pom.xml
& lt; Plugin & gt; & Lt; Group & gt; Org.apache.maven.plugins & lt; / Group & gt; & Lt; ArtifactId & gt; Maven-assembly-plug-in & lt; / ArtifactId> & Lt; Configuration & gt; & Lt; Collections & gt; & Lt; Appearance & gt; & Lt; MainClass & gt; My.package.to.my.MainClass & lt; / MainClass & gt; & Lt; / Reveal & gt; & Lt; / Collection & gt; & Lt; / Configuration & gt; & Lt; / Plugin & gt;
mvn assembly: assembly-ddescriptorId = jar-of-dependence
src / assembly / uberjar.xml
, with the following content:
& lt; Assembly & gt; & Lt; ID & gt; Uberjar & lt; / Id & gt; & Lt; Formats & gt; & Lt; Format & gt; Jar & lt; / Format & gt; & Lt; / Formats & gt; & Lt; IncludeBaseDirectory & gt; False & lt; / IncludeBaseDirectory & gt; & Lt; DependencySets & gt; & Lt; DependencySet & gt; & Lt; Open & gt; False & lt; / Shell> & Lt; Scope & gt; Sequence & lt; / Scope & gt; & Lt; UseProjectArtifact & gt; False & lt; / UseProjectArtifact & gt; & Lt; / DependencySet & gt; & Lt; / DependencySets & gt; & Lt; Fileset & gt; & Lt; Fileset & gt; & Lt; Directory & gt; $ {Project.build.outputDirectory} & lt; / Directory & gt; & Lt; OutputDirectory & gt; / & Lt; / OutputDirectory & gt; & Lt; / Fileset & gt; & Lt; / Fileset & gt; & Lt; / Assembly & gt; After that, configure the maven-assembly-plugin to use this scanner and add the dependency to the entry of the
class-path
manifest:
& lt; Plugin & gt; & Lt; Group & gt; Org.apache.maven.plugins & lt; / Group & gt; & Lt; ArtifactId & gt; Maven-assembly-plug-in & lt; / ArtifactId> & Lt; Configuration & gt; & Lt; Descriptor & gt; & Lt; Descriptor & gt; Src / assembly / uberjar.xml & lt; / Narrator & gt; & Lt; / Narrator & gt; & Lt; Collections & gt; & Lt; Appearance & gt; & Lt; MainClass & gt; My.package.to.my.MainClass & lt; / MainClass & gt; & Lt; AddClasspath & gt; True & lt; / AddClasspath & gt; & Lt; / Reveal & gt; & Lt; / Collection & gt; & Lt; / Configuration & gt; & Lt ;! - & lt; Executions & gt; & Lt; Execution & gt; & Lt; Step & gt; Package & lt; / Step & gt; & Lt; Goals & gt; & Lt; Goal & gt; A & lt; / Target & gt; & Lt; / Targets & gt; & Lt; / Execution & gt; & Lt; / Hanging & gt; - & gt; & Lt; / Plugin & gt;
Finally create your uberjar to run mvn assembly: assembly
Alternatively, package to cancel the
executions
element (and the assembly has been produced as part of normal construction).
No comments:
Post a Comment