0 Replies Latest reply on Oct 11, 2014 10:14 AM by Tung Tran

    Maven deploy jar file include dependencies

    Tung Tran Newbie

      Hi, I want to deploy my app in jar packaging format. But my app relies on some spring dependencies. How can I make everything included in one single jar file.

      I tried to do some hacks such as using maven-jar-plugin, maven-assembly-plugin but neither work.

      This is the maven pom.xml

      <build>
              <plugins>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-jar-plugin</artifactId>
                      <version>2.4</version>
                      <configuration>
                          <archive>
                              <manifest>
                                  <classpathPrefix>lib/</classpathPrefix>
                                  <addClasspath>true</addClasspath>
                              </manifest>
                          </archive>
                      </configuration>
                  </plugin>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-assembly-plugin</artifactId>
                      <version>2.4</version>
                      <configuration>
                          <descriptors>
                              <descriptor>src/main/resources/package-setting.xml</descriptor>
                          </descriptors>
                      </configuration>
                      <executions>
                          <execution>
                              <id>make-assembly</id>
                              <phase>package</phase>
                              <goals>
                                  <goal>single</goal>
                              </goals>
                          </execution>
                      </executions>
                  </plugin>
           ...
      </build>
      

       

      The package-setting.xml of maven-assembly

      <?xml version="1.0" encoding="UTF-8"?>
      <assembly
          xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
          <id>distribution</id>
          <formats>
              <format>jar</format>
          </formats>
          <includeBaseDirectory>false</includeBaseDirectory>
          <fileSets>
              <fileSet>
                  <directory>${project.build.directory}</directory>
                  <outputDirectory>/</outputDirectory>
                  <includes>
                      <include>*.jar</include>
                  </includes>
              </fileSet>
          </fileSets>
          <dependencySets>
              <dependencySet>
                  <scope>runtime</scope>
                  <outputDirectory>/lib</outputDirectory>
                  <useProjectArtifact>false</useProjectArtifact>
                  <unpack>false</unpack>
              </dependencySet>
          </dependencySets>
      </assembly>
      

       

      And this is the result

      wrapper.jar
          |-- META-INF
              |-- MANIFEST.MF
          |-- my-project.jar
          |-- lib
              |-- dependency1.jar
              |-- dependency2.jar
      

       

      But this does not work. Any idea?