Help with setting up classpath in an executable jar file -


i trying build executable jar maven-assembly-plugin dependencies. want dependencies in /lib/ directory inside jar, main jar outside, , configuration files in same level of main jar.

my pom.xml is:

<plugin>                 <artifactid>maven-assembly-plugin</artifactid>                 <version>2.2.1</version>                 <configuration>                   <archive>                     <manifest>                       <addclasspath>true</addclasspath>                       <classpathprefix>lib/</classpathprefix>                       <mainclass>org.main.class</mainclass>                     </manifest>                     <manifestentries>                         <class-path>/ mainclass.jar</class-path>                     </manifestentries>                   </archive>                   <descriptors>                      <!--relative path descriptor -->                      <descriptor>src/main/assembly/packagejar.xml</descriptor>                    </descriptors>                 </configuration> </plugin> 

the packagejar.xml is:

<id>eval</id>   <formats>     <format>jar</format>   </formats>   <includebasedirectory>false</includebasedirectory>   <filesets>     <fileset>       <directory>${project.build.directory}</directory>       <outputdirectory>/</outputdirectory>       <includes>         <include>mainclass.jar</include>       </includes>     </fileset>   </filesets>   <files>     <file>         <source>/src/main/resource/logging.properties</source>         <outputdirectory>/</outputdirectory>     </file>     <file>         <source>/src/main/resource/log4j.properties</source>         <outputdirectory>/</outputdirectory>     </file>     <file>         <source>/src/main/resource/hibernate.cfg.xml</source>         <outputdirectory>/</outputdirectory>     </file>   </files>   <dependencysets>     <dependencyset>       <outputdirectory>/lib/</outputdirectory>       <useprojectartifact>false</useprojectartifact>       <unpack>false</unpack>       <scope>runtime</scope>     </dependencyset>   </dependencysets>   </assembly> 

and resulting manifest.mf file is:

manifest-version: 1.0 archiver-version: plexus archiver created-by: apache maven built-by: german build-jdk: 1.6.0_22 main-class: org.main.class class-path: / mainclass.jar lib/dependency1.jar lib/dependency2.jar etc... 

with this, mainclass execute, never finds jars inside lib needs work. i'm missing basic. i've tried adding in pom.xml manifestentries lib/, lib/.jar, /lib , /lib/.

any ideas?

thanks in advance.

refer java tutorial on why can't done in way expect. question on way release executable jar, 1 possible way, not might want send dependencies separately. there couple of plugins build executable jar dependencies in it(but not way expected). onejar , maven shade . 1 jar builts executable jar dependencies in lib directory , has custom class loader classes within executable jar. maven shade plugin unjars dependency libraries within executable jar. used maven shade, because had necessity transformations when building executable along spring dependencies.


Comments