`
jaesonchen
  • 浏览: 309919 次
  • 来自: ...
社区版块
存档分类
最新评论

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

 
阅读更多

目标应用本身打成一个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文件,内容结构如下:



 

分享到:
评论

相关推荐

    maven打包成第三方jar包且把pom依赖包打入进来的方法

    以上就是使用Maven打包成第三方JAR包且把pom依赖包打入的方法。通过这个方法打包的JAR包具有很高的可用性,开发者不需要手动处理复杂的依赖关系,只需简单地将JAR包部署到目标环境即可运行。希望本文内容能帮助到你...

    eclipse 打包 jar 碰到的问题(包含第三方包)

    这篇博客“eclipse 打包 jar 碰到的问题(包含第三方包)”主要讨论了在Eclipse中处理这种问题的方法。 首先,问题的症结在于如何正确地将项目依赖的第三方库包含到JAR文件中。通常,我们创建的Java项目会引用一些...

    Fatjar打包第三方包

    Fatjar,又称为“胖Jar”,指的是将所有依赖库(包括第三方jar包)一起打包到单个JAR文件中的方法。这样做可以使得最终用户无需担心类路径配置问题,只需双击运行这个“胖”JAR即可。 在MyEclipse和Eclipse中,打包...

    myeclipse打包jar文件包含第三方jar包(文档+工具)

    `FatJar`是一个第三方插件,适用于`Eclipse`和`MyEclipse`,它的主要功能是帮助开发者将所有项目依赖的库文件(即第三方JAR包)打包进最终的可执行JAR中。这样,当用户运行这个单一的JAR文件时,不需要额外配置类...

    myeclpse7.5fatjar第三方包打包到压缩包

    "myeclipse7.5fatjar第三方包打包到压缩包"这个标题指的就是使用MyEclipse 7.5版本的集成开发环境,结合fatjar插件,将项目及其依赖的第三方库打包成一个压缩包的过程。 MyEclipse 7.5是一款功能强大的Java EE集成...

    打包可执行程序引用了第三方包)

    综上所述,打包可执行程序并包含第三方包是一项重要的软件工程实践,它涉及到多个方面,包括但不限于选择正确的打包工具、管理第三方依赖、保证代码质量以及确保程序在目标环境下稳定运行。虽然具体博文内容未知,但...

    SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案

    本文提供了SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案,包括引入外部jar包、配置pom.xml文件和排除冲突的jar包等解决方案。这些解决方案可以帮助开发者解决SpringBoot使用Maven打包异常时引入外部jar...

    spring boot 第三方jar包抽离方案

    通过修改`spring-boot-maven-plugin`的配置,可以排除不需要打包进jar的第三方jar包。可以按maven坐标排除,也可以按组ID排除。在父工程的`etcloud-parent`中定义插件配置,子工程引用父工程配置并可覆盖自定义设置...

    创建jar并引入第三方包

    - **Extract required libraries into generated JAR**:这个选项会将所有依赖的第三方库解压并合并到新的JAR文件中,使其成为一个自包含的可执行文件。 - **Package required libraries into generated JAR**:这...

    jdk引入第三方jar

    在Java开发过程中,引入第三方JAR包是常见的操作,它能帮助我们快速利用已有的库功能,节省开发时间和精力。本篇文章将详细讲解如何在Java项目中导入并使用第三方JAR包,以及与之相关的工具和实践技巧。 首先,我们...

    解决第三方包导入冲突

    然而,在某些情况下,可能会遇到"第三方包导入冲突"的问题,这主要是因为两个或更多的库依赖于相同但版本不同的类或者方法,导致编译或运行时出错。本篇将深入探讨如何解决这类问题。 首先,当遇到包冲突时,一个...

    myeclpse7.5fat jar 将第三方包导入项目

    在Java开发中,"fat jar"(也称为"uber jar")是一种打包方式,它将所有依赖库(包括第三方库)合并到一个单独的JAR文件中,使得开发者可以轻松地分发和运行整个应用程序,而无需关心项目的依赖关系。在本教程中,...

    详解IDEA中MAVEN项目打JAR包的简单方法

    此外,还有其他的打包方法,比如使用 spring-boot-maven-plugin 插件在打 Jar 包时,会引入依赖包。 在生成的 JAR 文件中,我们可以使用 java -jar 命令来运行这个 JAR 包,输出结果将是“Hello World”。 使用 ...

    如何在Ant中引入第三方Jar包

    当项目中需要依赖第三方库(如Jar包)时,理解如何在Ant中引入这些依赖至关重要。以下将详细解释如何在Ant构建文件中配置和使用第三方Jar包。 首先,让我们了解Ant的基本结构。一个Ant项目通常包含一个名为`build....

    Java在制作jar包时引用第三方jar包的方法

    如果应用程序依赖于第三方库,那么在打包成JAR时也必须将这些依赖的第三方JAR包包含进去。在不恰当引用第三方JAR包的情况下,可能会遇到类找不到的错误。为了正确引用第三方JAR包,需要了解Java类加载器的工作机制...

    Thingsboard详细说明.doc

    本文档详细介绍了Thingsboard的项目框架、涉及的流程图、第三方包、设备连接协议、打包过程、日志管理、数据库结构以及前端技术概述,旨在帮助开发者更好地理解和使用Thingsboard。 ### 第一章 项目框架整理说明 ...

    shade解决mybatis包冲突问题及项目引用的方法

    shade可以将第三方包中的类、资源和依赖项重命名,使得它们不会与其他包中的类、资源和依赖项冲突。 为什么需要shade 在项目中,可能会出现多个第三方包依赖项相同的类或资源,从而导致冲突问题。例如,在使用...

    Spring Boot Reference Guide 2.1.0.BUILD

    此外,Spring Boot Reference Guide还包括一个附录,列出了Spring Boot的配置属性、内嵌日志配置选项、构建系统插件和第三方包的兼容性等有用信息。 总的来说,Spring Boot Reference Guide是一个全面的指南,为...

Global site tag (gtag.js) - Google Analytics