利用MAVEN打包可运行jar包,包括依赖的第三方包


背景:

另一篇文章说了如何利用IDEA来打包,现在来说说如何利用MAVEN打包

 

目标应用本身打成一个jar包,依赖的第三方包放到lib目录下

 

开发环境

OS: Windows 8.1

JDK: 1.7.0

开发工具: IntelliJ IDEA 13.1.1

 

步骤:

1. 首先看下maven项目的标准目录结构:


 

2. 看下项目pom.xml的配置,首先要配置maven-jar-plugin,把自己的代码编译打包成jar文件,然后配置maven-assembly-plugin,把整个项目打包成一个发布包。

Xml代码   收藏代码
  1. <build>  
  2.     <plugins>  
  3.         <!-- The configuration of maven-jar-plugin -->  
  4.         <plugin>  
  5.             <groupId>org.apache.maven.plugins</groupId>  
  6.             <artifactId>maven-jar-plugin</artifactId>  
  7.             <version>2.4</version>  
  8.             <!-- The configuration of the plugin -->  
  9.             <configuration>  
  10.                 <!-- Configuration of the archiver -->  
  11.                 <archive>  
  12.   
  13.                     <!-- 
  14.                         生成的jar中,不要包含pom.xml和pom.properties这两个文件 
  15.                     -->  
  16.                     <addMavenDescriptor>false</addMavenDescriptor>  
  17.   
  18.                     <!-- Manifest specific configuration -->  
  19.                     <manifest>  
  20.                         <!-- 
  21.                             是否要把第三方jar放到manifest的classpath中 
  22.                         -->  
  23.                         <addClasspath>true</addClasspath>  
  24.                         <!-- 
  25.                            生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/ 
  26.                        -->  
  27.                         <classpathPrefix>lib/</classpathPrefix>  
  28.                         <!-- 
  29.                             应用的main class 
  30.                         -->  
  31.                         <mainClass>dbRobot.BeanRobot</mainClass>  
  32.                     </manifest>  
  33.                 </archive>  
  34.                 <!-- 
  35.                     过滤掉不希望包含在jar中的文件 
  36.                 -->  
  37.                 <excludes>  
  38.                     <exclude>${project.basedir}/xml/*</exclude>  
  39.                 </excludes>  
  40.             </configuration>  
  41.         </plugin>  
  42.   
  43.         <!-- The configuration of maven-assembly-plugin -->  
  44.         <plugin>  
  45.             <groupId>org.apache.maven.plugins</groupId>  
  46.             <artifactId>maven-assembly-plugin</artifactId>  
  47.             <version>2.4</version>  
  48.             <!-- The configuration of the plugin -->  
  49.             <configuration>  
  50.                 <!-- Specifies the configuration file of the assembly plugin -->  
  51.                 <descriptors>  
  52.                     <descriptor>src/main/assembly/package.xml</descriptor>  
  53.                 </descriptors>  
  54.             </configuration>  
  55.             <executions>  
  56.                 <execution>  
  57.                     <id>make-assembly</id>  
  58.                     <phase>package</phase>  
  59.                     <goals>  
  60.                         <goal>single</goal>  
  61.                     </goals>  
  62.                 </execution>  
  63.             </executions>  
  64.         </plugin>  
  65.     </plugins>  
  66. </build>  

 

 3. 再来看package.xml的配置

Xml代码   收藏代码
  1. <assembly>  
  2.     <id>bin</id>  
  3.     <!-- 最终打包成一个用于发布的zip文件 -->  
  4.     <formats>  
  5.         <format>zip</format>  
  6.     </formats>  
  7.   
  8.     <!-- Adds dependencies to zip package under lib directory -->  
  9.     <dependencySets>  
  10.         <dependencySet>  
  11.             <!-- 
  12.                不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 
  13.            -->  
  14.             <useProjectArtifact>false</useProjectArtifact>  
  15.             <outputDirectory>lib</outputDirectory>  
  16.             <unpack>false</unpack>  
  17.         </dependencySet>  
  18.     </dependencySets>  
  19.   
  20.     <fileSets>  
  21.         <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->  
  22.         <fileSet>  
  23.             <directory>${project.basedir}</directory>  
  24.             <outputDirectory>/</outputDirectory>  
  25.             <includes>  
  26.                 <include>README*</include>  
  27.                 <include>LICENSE*</include>  
  28.                 <include>NOTICE*</include>  
  29.             </includes>  
  30.         </fileSet>  
  31.           
  32.         <!-- 把项目的配置文件,打包进zip文件的config目录 -->  
  33.         <fileSet>  
  34.             <directory>${project.basedir}\src\main\config</directory>  
  35.             <outputDirectory>config</outputDirectory>  
  36.             <includes>  
  37.                 <include>*.xml</include>  
  38.                 <include>*.properties</include>  
  39.             </includes>  
  40.         </fileSet>  
  41.           
  42.         <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->  
  43.         <fileSet>  
  44.             <directory>${project.build.scriptSourceDirectory}</directory>  
  45.             <outputDirectory></outputDirectory>  
  46.             <includes>  
  47.                 <include>startup.*</include>  
  48.             </includes>  
  49.         </fileSet>  
  50.   
  51.         <!-- 把项目的脚本文件(除了启动脚本文件),打包进zip文件的script目录 -->  
  52.         <fileSet>  
  53.             <directory>${project.build.scriptSourceDirectory}</directory>  
  54.             <outputDirectory></outputDirectory>  
  55.             <includes>  
  56.                 <exclude>startup.*</exclude>  
  57.             </includes>  
  58.         </fileSet>  
  59.           
  60.         <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->  
  61.         <fileSet>  
  62.             <directory>${project.build.directory}</directory>  
  63.             <outputDirectory></outputDirectory>  
  64.             <includes>  
  65.                 <include>*.jar</include>  
  66.             </includes>  
  67.         </fileSet>  
  68.     </fileSets>  
  69. </assembly>  

 

4. 经过jar和assembly,最终得到一个可发布的zip文件,内容结构如下:



 

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值