`

maven 自动打包

阅读更多

 

转自:http://skydream.iteye.com/blog/437937

 
在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了实现自己需要的打包格式而使用maven ant task以maven + ant的方式来实现非标准打包,而现在要介绍的是maven中针对打包任务而提供的标准插件:assembly plugin。

    依然以上文(初学maven(4)-使用maven ant task实现非标准打包)的项目为例,要打包的程序如下:

    demo1
    |____lib
    |_____demo1.jar
    |_____*****.jar
    |_____*****.jar
    |____config
    |_____*****.properties
    |_____*****.xml
    |____log
    |_____*****.log
    |____run.bat
    |____run.sh

    类似的建立java项目,文件结构如下:

    demo1
    |____src/main/java
    |____src/main/config
    |____src/main/bin
    |____src/main/resources
    |____src/main/assemble
    |____src/test/java
    |____src/test/resources
    |____target
    |____pom.xml

    除开增加了src/main/assemble目录和没有ant的build文件外,其他内容完全一样:其中src/main/java下放java代码;src/main/resources下放一个*.properties文件,这个资源文件是打包到 jar中,内容打包之后不需要改变的。src/main/config下放一个标准的log4j.xml,这个是有在安装运行前临时修改的需要的。src /main/bin下放置可执行文件。

    assembly plugin的使用方式比较简单,主要有:

1. 修改pom.xml

    pom.xml中设置如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->< build >
         < plugins >
             < plugin >
                 < artifactId > maven-assembly-plugin </ artifactId >
                 < configuration >
                     <!--  not append assembly id in release file name  -->
                     < appendAssemblyId > false </ appendAssemblyId >
                     < descriptors >
                         < descriptor > src/main/assemble/package.xml </ descriptor >
                     </ descriptors >
                 </ configuration >
                 < executions >
                     < execution >
                         < id > make-assembly </ id >
                         < phase > package </ phase >
                         < goals >
                            < goal > single </ goal >
                         </ goals >
                     </ execution >
                 </ executions >
             </ plugin >
         </ plugins >
     </ build >

    其中<artifactId>maven-assembly-plugin</artifactId>的maven-assembly-plugin是这个插件的标准命名,在maven2.0.*中带的默认版本是

    appendAssemblyId属性控制是否在生成的打包文件的文件名中包含assembly id。
   
    descriptor属性指定maven-assembly-plugin的配置文件,当然我设置的是src/main/assemble/package.xml.容许使用多个,功能强大当然用法也复杂,对于简单情况一个足矣。

    execution的设置是为了将maven-assembly-plugin继承到标准的maven打包过程中,这样在运行maven-package时就会执行maven-assembly-plugin的操作,从而实现我们需要的自定义打包。
2. assemble descriptor file

    我的src/main/assemble/package.xml内容如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->< assembly  xmlns ="http://maven.apache.org/POM/4.0.0"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd" >
     < id > package </ id >
     < formats >
         < format > zip </ format >
     </ formats >
     < includeBaseDirectory > true </ includeBaseDirectory >
     < fileSets >
         < fileSet >
             < directory > src/main/bin </ directory >
             < outputDirectory > / </ outputDirectory >
         </ fileSet >
         < fileSet >
             < directory > src/main/config </ directory >
             < outputDirectory > config </ outputDirectory >
         </ fileSet >
     </ fileSets >
     < dependencySets >
         < dependencySet >
             < outputDirectory > lib </ outputDirectory >
             < scope > runtime </ scope >
         </ dependencySet >
     </ dependencySets >
</ assembly >

   
    详细的语法不介绍了,请参考官方指南,有非常详尽的说明:Assembly Descriptor Format reference

    简单解释一下:

    1) format
    format=zip设置打包的最终文件格式为zip.
    支持的其他格式还有gz,tar,tar.gz,tar.bz2。

    2)  fileset

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->     < fileSet >
             < directory > src/main/bin </ directory >
             < outputDirectory > / </ outputDirectory >
     </ fileSet >  

 
    将src/main/bin目录下的文件打包到根目录(/)下.

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->< fileSet >
             < directory > src/main/config </ directory >
             < outputDirectory > config </ outputDirectory >
</ fileSet >

    将src/main/config目录下的文件打包到config下.

    3) dependencySets

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->     < dependencySet >
             < outputDirectory > lib </ outputDirectory >
             < scope > runtime </ scope >
    </ dependencySet >

    将scope为runtime的依赖包打包到lib目录下。


    总结一下,pom.xml中引入maven-assembly-plugin,然后assemble descriptor file按需设置,最后在eclipse中执行Run As -> Maven package,在target目录下就会出现***.zip文件,里面的格式和要求的完全一致。

 

分享到:
评论

相关推荐

    基于Maven+SVN自动打包

    【标题】:“基于Maven+SVN自动打包” 在软件开发过程中,自动化构建与版本控制是提高效率的关键步骤。本文将深入探讨如何结合Maven和SVN实现项目的自动打包流程,帮助开发者更有效地管理和部署代码。 【Maven】:...

    Maven自动升级版本号并打包上传的脚本

    标题提到的“Maven自动升级版本号并打包上传的脚本”主要涉及以下知识点: 1. Maven的生命周期与插件: Maven拥有丰富的生命周期,如`clean`、`compile`、`test`、`package`等,它们定义了一系列阶段,每个阶段...

    Java+IDEA+Maven混淆打包

    本教程将详细讲解如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包,确保代码的安全性并提高可维护性。 首先,让我们了解一下涉及的工具和技术: 1. **Java**: 一种广泛使用的面向对象的编程语言,用于构建跨...

    python自动化打包java maven工程,并上传至服务器

    python自动化打包java maven工程,并上传至服务器,简化服务器war上传步骤和节约时间

    maven3.5.4打包文件

    ** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...

    maven 过滤文件夹打包

    在软件开发过程中,尤其是Java应用,Maven是一个广泛使用的构建工具,它可以帮助开发者自动化构建、测试和部署项目。"maven 过滤文件夹打包"这个主题涉及到的是如何利用Maven的资源过滤功能来实现针对不同运行环境的...

    maven 一键打包

    对于需要在多台服务器上部署的应用,可以使用Maven的`deploy`生命周期阶段,配合特定的插件如`maven-deploy-plugin`,将打包后的文件自动上传到远程服务器。然而,集群部署还需要考虑到负载均衡、服务发现和配置管理...

    Maven打包实战.zip

    本压缩包文件“Maven打包实战.zip”提供了关于Maven打包的实战教程,配合文章《Maven打包实战》(链接已提供)学习,将有助于深入理解Maven的打包流程。 首先,我们需要理解Maven的生命周期。Maven生命周期包括三个...

    maven打包出错解决办法,亲测绝对可以!

    在开发Java项目时,Maven是一个非常重要的构建工具,它帮助我们管理依赖、构建项目以及自动化测试。然而,有时候在使用Maven进行打包操作时,可能会遇到各种问题。本篇文章将详细阐述如何解决Maven打包出错的问题,...

    Windows下git拉取/推送,SVN更新/提交,maven自动编译打包,angular打包的bat脚本

    本主题将详细讲解如何利用Git进行拉取与推送,SVN进行更新和提交,Maven实现自动化编译,以及Angular项目的打包发布,这一切都将通过批处理(BAT)脚本来实现,以提高工作效率。 首先,我们来看Git的拉取(pull)和...

    maven+bat打包

    "maven+bat打包"是指使用Apache Maven,一个流行的Java项目管理工具,结合批处理脚本(BAT)来自动化项目的打包过程。这种方式可以极大地提高开发效率,确保每次构建的一致性和可重复性。下面将详细介绍这个过程及其...

    基于git+maven本地自动打包自动发布到生产环境脚本,助力快速发布普通应用

    脚本基于git+maven自动打包并发布到远程服务器,适用于本地测试发布,生产环境远程发布。主要是助力快速打包发布应用,如果需要发布多台服务器,可在该基本的基础上拓展,该脚本也具有学习参考作用。

    maven项目批量打包 batch_mvn_install.bat

    遍历文件夹及子文件夹下得pom文件,自动清理、编译、安装。适合批量编译多个maven工程

    maven打包

    “源码”指的是项目中的Java源文件和其他编程语言的源文件,Maven能够自动编译这些源码并将其打包成可执行格式。而“工具”一词则表明Maven作为一个强大的自动化构建工具,它提供了丰富的插件系统,可以执行各种任务...

    reportng源码(maven编译打包)

    Maven是一个广泛使用的Java项目管理和集成工具,它帮助开发者自动化构建、依赖管理和项目信息管理。 首先,我们来详细了解一下Maven。Maven通过使用一个项目对象模型(Project Object Model,POM)来定义项目,并且...

    maven打包使用yui压缩css和js文件

    在命令行中,我们可以通过运行 `mvn clean package` 命令来触发Maven生命周期,这将清理旧的构建产物,编译源代码,并最终打包项目。在这个过程中,YUI Compressor会自动对指定的CSS和JS文件进行压缩。 4. **检查...

    maven plugin打包下载

    当你在`pom.xml`中指定插件及其版本后,Maven会在构建时自动从仓库下载。默认仓库地址为https://repo1.maven.org/maven2/。如果需要私有仓库,可以在`settings.xml`中配置。 五、Maven Plugin的插件集(Plugin ...

    eclipse maven 打包bundle

    总的来说,Eclipse与Maven结合使用可以简化OSGi bundle的开发和打包过程,使得管理依赖和构建流程变得更加高效和自动化。在实际项目中,理解并熟练掌握这些工具和概念对于提升开发效率至关重要。

    springboot+maven打包demo【将依赖与配置文件打包到jar包外部】

    接着是Maven,它是Java世界中最常用的构建工具之一,它通过POM(Project Object Model)文件管理项目的依赖关系,并且提供了自动化构建项目的功能。Maven的插件系统允许我们扩展其功能,例如打包、测试、部署等。 ...

    spring 扫描jar maven 打包

    标题 "spring 扫描jar maven 打包" 涉及的是在Java开发中,如何使用Spring框架和Maven工具来构建并打包一个项目,其中包含Spring对jar包的扫描以及Maven的打包流程。这里我们将深入探讨这两个关键概念。 1. **...

Global site tag (gtag.js) - Google Analytics