1. 程式人生 > >將Maven專案打包成可執行jar檔案和外種配置方式(引用第三方jar)

將Maven專案打包成可執行jar檔案和外種配置方式(引用第三方jar)

http://blog.csdn.net/zhangdaiscott/article/details/6911640

方法一. mvn assembly 或 mvn package (一個jar包)

把依賴包和自己專案的檔案打包如同一個jar包(這種方式對spring的專案不支援)
  1. <build>
  2.       <plugins>
  3.           <plugin>
  4.               <artifactId>maven-assembly-plugin</artifactId>
  5.               <
    configuration>
  6.                   <archive>
  7.                       <manifest>
  8.                           <mainClass>com.tang.CSVUtils</mainClass>
  9.                       </manifest>
  10.                   </archive>
  11.                   <descriptorRefs>
  12.                       <
    descriptorRef>
  13.                           jar-with-dependencies  
  14.                       </descriptorRef>
  15.                   </descriptorRefs>
  16.               </configuration>
  17.               <!-- 加上下面這一段,使用 mvn package命令,不加則使用mvn assembly-->
  18.               <!-- <executions
    >
  19.                   <execution>
  20.                       <id>make-assemble</id>
  21.                       <phase>package</phase>
  22.                       <goals>
  23.                           <goal>single</goal>
  24.                       </goals>
  25.                   </execution>
  26.               </executions> -->
  27.           </plugin>
  28.       </plugins>
  29.   </build>
Eclipse 中 Run As--- Maven clean ---Maven assembly:assembly(或 Maven package)

Target目錄生成如下檔案:

其中,

testLog4j-0.1.jar 是不可直接執行的,因為沒有帶第三方包。

testLog4j-0.1-jar-with-dependencies.jar 就是帶有第三方包的可執行 jar 包,

在命令列執行 java -jar testLog4j-0.1-jar-with-dependencies.jar 即可執行

方法二:mvn package(一個jar包和一個lib資料夾)

  1. <build>
  2.     <plugins>
  3.         <plugin>
  4.             <groupId>org.apache.maven.plugins</groupId>
  5.             <artifactId>maven-jar-plugin</artifactId>
  6.             <version>2.4</version>
  7.             <configuration>
  8.                 <archive>
  9.                     <manifest>
  10.                         <addClasspath>true</addClasspath>
  11.                         <classpathPrefix>lib/</classpathPrefix>
  12.                         <mainClass>com.tang.CSVUtils</mainClass>
  13.                     </manifest>
  14.                 </archive>
  15.             </configuration>
  16.         </plugin>
  17.         <plugin>
  18.             <groupId>org.apache.maven.plugins</groupId>
  19.             <artifactId>maven-dependency-plugin</artifactId>
  20.             <executions>
  21.                 <execution>
  22.                     <id>copy</id>
  23.                     <phase>package</phase>
  24.                     <goals>
  25.                         <goal>copy-dependencies</goal>
  26.                     </goals>
  27.                     <configuration>
  28.                         <outputDirectory>${project.build.directory}/lib</outputDirectory>
  29.                     </configuration>
  30.                 </execution>
  31.             </executions>
  32.         </plugin>
  33.     </plugins>
  34. </build>

執行maven package 進行打包進入target目錄。

其中lib就是第三方jar包的目錄,在其他專案引入testLog4j-0.1.jar會自動找到並引入lib裡面的包.

只需要拷貝這兩個(lib和testLog4j-0.1.jar)即可放到其他地方用