maven assembly plugin使用

使用场景

在使用maven来管理项目时,项目除了web项目,还有可能为控制台程序,一般用于开发一些后台服务的程序。最近在工作中也遇到了这种场景,使用quartz开发一个任务调度程序。程序中依赖很多jar包,项目的启动时只需要初始化spring容器即可。

使用方法

使用一个简单的基于spring框架的demo来做程序示例,来介绍maven assembly插件的使用方法。

项目中的代码目录如下:

在以上代码目录中,assembly目录下为打包的描述文件,下面会详细介绍该文件,bin目录下为启动脚本以及readme等文件,main下为maven标准中建立的文件,java代码以及配置文件位于该目录下。

打包完成后压缩包目录如下:

打包完成后,我们可以看到bin目录来存放启动脚本等文件,config为配置文件,lib下为运行时依赖的jar包。

使用maven assembly插件需要在pom文件中配置,添加这个插件

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4.1</version>
                <executions>
                    <execution>
                        <id>make-zip</id>
                        <!-- 绑定到package生命周期阶段上 -->
                        <phase>package</phase>
                        <goals>
                            <!-- 绑定到package生命周期阶段上 -->
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors> <!--描述文件路径-->
                                <descriptor>src/assembly/assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

其中execution节点,我们配置了执行maven assembly插件的一些配置,descriptor节点配置指向assembly.xml的路径。

在assembly.xml配置了,我们打包的目录以及相应的设置

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>distribution</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}\src\main\resources</directory>
            <outputDirectory>\</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}\src\bin</directory>
            <outputDirectory>\bin</outputDirectory>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <!-- 将scope为runtime的依赖包打包到lib目录下。 -->
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets></assembly>

assembly.xml的配置项非常多,可以参考http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

以上只是用了很少的一部分。

format设置包输出的格式,以上格式设置的为zip格式,目前还支持zip,tar,tar.gz,tar.bz2,jar,dir,war格式

fileSet定义代码目录中与输出目录的映射,在该节点下还有 <includes/>,<excludes/>两个非常有用的节点。

比如:

        <fileSet>
            <directory>${project.basedir}\src\main\resources</directory>
            <outputDirectory>\</outputDirectory>
            <includes>
                <include>some/path</include>
            </includes>
            <excludes>
                <exclude>some/path1</exclude>
            </excludes>
        </fileSet>

以上代码表示归档时包括some/path,不包括some/path1

dependencySets节点下为依赖设置

在上述配置中,表示所有运行时依赖的jar包归档到lib目录下。在上述截图中lib目录下的文件就是所有依赖的jar包

更多节点的用法可以去官网查询

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

下面的文章会介绍打包后的包如何做成windows服务,linux服务。

参考资料

http://maven.apache.org/plugins/maven-assembly-plugin/

maven assembly plugin使用,布布扣,bubuko.com

时间: 2024-12-25 11:09:46

maven assembly plugin使用的相关文章

question --&gt; maven assembly plugin 修改文件默认权限

使用maven assembly plugin插件添加执行脚本时,发现默认权限为644,还需要手动添加执行权限.这很麻烦,于是查看文档 官方文档 http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_fileSet fileMode String Similar to a UNIX permission, sets the file mode of the files included. THIS IS

Maven Assembly插件介

你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包. Assembly插件会生成 "assemblies", 此特性等同于的Maven 1 distribution plug-in..该插件不仅支持创建二进制归档文件,也支持创建源码归档文件.这些assemblies定义在一个assembly描述符文件里.你可以选择自定义assembly描述符或者直接使用插件自带的三个预定义描述符中的任何一个. 目前Assembly插件

[转] 关于maven tomcat plugin 调试源码的解决方案

一. 解决关联第三方jar源码 在pom文件中加入: Xml代码   <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <

解决Maven报Plugin execution not covered by lifecycle configuration

环境 eclipse 4.3.0 maven 3.0.4 m2e 1.4.0 出现场景 以前的老项目,在我的环境(我的环境较新)下,别人老环境不报错. 错误示例 一个错误示例,子项目引用了父项目,子项目parent标签处报错如下: Multiple annotations found at this line: - maven-enforcer-plugin (goal "enforce") is ignored by m2e. - Plugin execution not cover

施用 maven shade plugin 解决 jar 或类的多版本冲突

施用 maven shade plugin 解决 jar 或类的多版本冲突 使用 maven shade plugin 解决 jar 或类的多版本冲突java 应用经常会碰到的依赖的三方库出现版本冲突,下面举一个具体的例子. Dubbo 是一个分布式的服务框架,其中的一种 rpc 实现(dubbo 协议)使用 hessian 3.2.0 来做序列化,另外一种实现(hsf协议)同样使用了 hesssian,但使用的版本是 3.0.14.如果现在一个应用中同时使用了 dubbo 协议和 hsf 协议

maven jetty plugin

前言: 在 maven 下测试调试时,相比较 Tomcat .Jboss .Jetty 而言,个人更倾向于使用 Jetty Plugin. 怎么说呢?使用 Jetty Plugin 的时候最爽的是不用你敲打包.部署,然后再启动服务器的指令,只需敲一句:mvn jetty:run 或直接点 eclipse 上的 run 按钮就完事了.而且更爽的是,你修改资源文件,Jetty 能自动扫描到并及时给予反馈进行重加载, 这对修改java文件很有帮助,不用每次修改java文件都要重启服务器,省掉了不少没必

[Apache Maven Shade Plugin] [example] [001] 官方例子:includes-excludes

链接地址:[Selecting Contents for Uber JAR](http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html) apache网站在国内打开太慢了.因此我将这些有用的资源收集起来,保存在博客中! Apache Maven Shade Plugin:是一个Maven打包的插件.其官网英文定义如下:This plugin provides the capability

学习 Maven之Maven Enforcer plugin

1.Maven Enforcer plugin是什么鬼? 在说这个插件是什么前我们先思考这么一个问题:当我们开发人员进入项目组进行开发前,要准备开发环境,而领导总是会强调工具的统一,编译环境的统一.比如要求所有开发人员使用JDK1.8进行开发. 开发人员接下来就是去下载指定版本的JDK,然后开始开发.但是如果开发人员的机器配置比较多,有好几个版本的JDK,而他虽然下载了JDK1.8,但是忘记配置环境变量,很有可能他用了JDK1.6进行的编译. 问题有了,该如何解决? Maven Enforcer

[Maven] - Eclipse &quot;maven compiler plugin&quot; 冲突解决

刚安装最新的Maven 3.2.5,在eclipse中使用maven的Run As->Maven Install,总会提示: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project testweb1: Compilation failure 解决办法: 在这里添加plugin: maven compiler plugin 如图: 在