转自: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】:...
标题提到的“Maven自动升级版本号并打包上传的脚本”主要涉及以下知识点: 1. Maven的生命周期与插件: Maven拥有丰富的生命周期,如`clean`、`compile`、`test`、`package`等,它们定义了一系列阶段,每个阶段...
本教程将详细讲解如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包,确保代码的安全性并提高可维护性。 首先,让我们了解一下涉及的工具和技术: 1. **Java**: 一种广泛使用的面向对象的编程语言,用于构建跨...
python自动化打包java maven工程,并上传至服务器,简化服务器war上传步骤和节约时间
** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...
在软件开发过程中,尤其是Java应用,Maven是一个广泛使用的构建工具,它可以帮助开发者自动化构建、测试和部署项目。"maven 过滤文件夹打包"这个主题涉及到的是如何利用Maven的资源过滤功能来实现针对不同运行环境的...
对于需要在多台服务器上部署的应用,可以使用Maven的`deploy`生命周期阶段,配合特定的插件如`maven-deploy-plugin`,将打包后的文件自动上传到远程服务器。然而,集群部署还需要考虑到负载均衡、服务发现和配置管理...
本压缩包文件“Maven打包实战.zip”提供了关于Maven打包的实战教程,配合文章《Maven打包实战》(链接已提供)学习,将有助于深入理解Maven的打包流程。 首先,我们需要理解Maven的生命周期。Maven生命周期包括三个...
在开发Java项目时,Maven是一个非常重要的构建工具,它帮助我们管理依赖、构建项目以及自动化测试。然而,有时候在使用Maven进行打包操作时,可能会遇到各种问题。本篇文章将详细阐述如何解决Maven打包出错的问题,...
本主题将详细讲解如何利用Git进行拉取与推送,SVN进行更新和提交,Maven实现自动化编译,以及Angular项目的打包发布,这一切都将通过批处理(BAT)脚本来实现,以提高工作效率。 首先,我们来看Git的拉取(pull)和...
"maven+bat打包"是指使用Apache Maven,一个流行的Java项目管理工具,结合批处理脚本(BAT)来自动化项目的打包过程。这种方式可以极大地提高开发效率,确保每次构建的一致性和可重复性。下面将详细介绍这个过程及其...
脚本基于git+maven自动打包并发布到远程服务器,适用于本地测试发布,生产环境远程发布。主要是助力快速打包发布应用,如果需要发布多台服务器,可在该基本的基础上拓展,该脚本也具有学习参考作用。
遍历文件夹及子文件夹下得pom文件,自动清理、编译、安装。适合批量编译多个maven工程
“源码”指的是项目中的Java源文件和其他编程语言的源文件,Maven能够自动编译这些源码并将其打包成可执行格式。而“工具”一词则表明Maven作为一个强大的自动化构建工具,它提供了丰富的插件系统,可以执行各种任务...
Maven是一个广泛使用的Java项目管理和集成工具,它帮助开发者自动化构建、依赖管理和项目信息管理。 首先,我们来详细了解一下Maven。Maven通过使用一个项目对象模型(Project Object Model,POM)来定义项目,并且...
在命令行中,我们可以通过运行 `mvn clean package` 命令来触发Maven生命周期,这将清理旧的构建产物,编译源代码,并最终打包项目。在这个过程中,YUI Compressor会自动对指定的CSS和JS文件进行压缩。 4. **检查...
当你在`pom.xml`中指定插件及其版本后,Maven会在构建时自动从仓库下载。默认仓库地址为https://repo1.maven.org/maven2/。如果需要私有仓库,可以在`settings.xml`中配置。 五、Maven Plugin的插件集(Plugin ...
总的来说,Eclipse与Maven结合使用可以简化OSGi bundle的开发和打包过程,使得管理依赖和构建流程变得更加高效和自动化。在实际项目中,理解并熟练掌握这些工具和概念对于提升开发效率至关重要。
接着是Maven,它是Java世界中最常用的构建工具之一,它通过POM(Project Object Model)文件管理项目的依赖关系,并且提供了自动化构建项目的功能。Maven的插件系统允许我们扩展其功能,例如打包、测试、部署等。 ...
标题 "spring 扫描jar maven 打包" 涉及的是在Java开发中,如何使用Spring框架和Maven工具来构建并打包一个项目,其中包含Spring对jar包的扫描以及Maven的打包流程。这里我们将深入探讨这两个关键概念。 1. **...