maven的assemble的使用

2024-03-18 20:48
文章标签 maven 使用 assemble

本文主要是介绍maven的assemble的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发Maven项目中,我们可能有各种各样的打包需求,当然最简单的就是,把整个Application打包成一个jar,这是Spring-boot项目中,常见的打包项目,有些项目可能比较复杂,还需要打包一些外部的配置的文件,或者自定义的shell脚本或者bat命令等,这时候使用assemble命令就比较方便了。

项目结构目录如下:





除了标准的创建maven项目会自带
src/main/java
src/main/resource
src/test/java
外,我们还自定义了bin,conf,assemble目录,其中bin目录用来存放项目启动,停止的一些脚本,conf存放了一些
外部配置文件,外部文件比较灵活,比如参数改了,不需要重新编译,只需要重启这个项目即可,assemble存放了我们打包的描述文件package.xml,内容如下:

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0"?>  
  2. <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"  
  3.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.           xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">  
  5.   
  6.     <!--项目标识,设置的话,生成后的zip文件会加上此后缀-->  
  7.     <id></id>  
  8.     <!--打包格式-->  
  9.     <formats>  
  10.         <format>zip</format>  
  11.     </formats>  
  12.     <!--是否包含根目录文件夹-->  
  13.     <includeBaseDirectory>true</includeBaseDirectory>  
  14.   
  15.     <fileSets>  
  16.   
  17.         <!--<fileSet>-->  
  18.             <!--<directory>${project.basedir}\src\main\resources</directory>-->  
  19.             <!--<outputDirectory>\</outputDirectory>-->  
  20.             <!--<includes>-->  
  21.                 <!--<include>some/path</include>-->  
  22.             <!--</includes>-->  
  23.             <!--<excludes>-->  
  24.                 <!--<exclude>some/path1</exclude>-->  
  25.             <!--</excludes>-->  
  26.         <!--</fileSet>-->  
  27.   
  28.         <!--自定义文件描述集-->  
  29.         <fileSet>  
  30.             <!--自定义脚本目录打包-->  
  31.             <directory>${project.basedir}\src\main\bin</directory>  
  32.             <outputDirectory>\bin</outputDirectory>  
  33.             <includes>  
  34.                 <include>*.*</include>  
  35.             </includes>  
  36.             <!--设置权限-->  
  37.             <fileMode>0755</fileMode>  
  38.         </fileSet>  
  39.   
  40.         <fileSet>  
  41.             <!--外部配置文件打包-->  
  42.             <directory>${project.basedir}\src\main\config</directory>  
  43.             <outputDirectory>\config</outputDirectory>  
  44.             <includes>  
  45.                 <include>*.*</include>  
  46.             </includes>  
  47.             <fileMode>0644</fileMode>  
  48.         </fileSet>  
  49.     </fileSets>  
  50.   
  51.     <dependencySets>  
  52.   
  53.         <dependencySet>  
  54.             <useProjectArtifact>true</useProjectArtifact>  
  55.             <outputDirectory>lib</outputDirectory>  
  56.             <!-- 将scope为runtime的依赖包打包到lib目录下。 -->  
  57.             <scope>runtime</scope>  
  58.         </dependencySet>  
  59.     </dependencySets>  
  60.   
  61.  </assembly>  
<?xml version="1.0"?>
<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"><!--项目标识,设置的话,生成后的zip文件会加上此后缀--><id></id><!--打包格式--><formats><format>zip</format></formats><!--是否包含根目录文件夹--><includeBaseDirectory>true</includeBaseDirectory><fileSets><!--<fileSet>--><!--<directory>${project.basedir}\src\main\resources</directory>--><!--<outputDirectory>\</outputDirectory>--><!--<includes>--><!--<include>some/path</include>--><!--</includes>--><!--<excludes>--><!--<exclude>some/path1</exclude>--><!--</excludes>--><!--</fileSet>--><!--自定义文件描述集--><fileSet><!--自定义脚本目录打包--><directory>${project.basedir}\src\main\bin</directory><outputDirectory>\bin</outputDirectory><includes><include>*.*</include></includes><!--设置权限--><fileMode>0755</fileMode></fileSet><fileSet><!--外部配置文件打包--><directory>${project.basedir}\src\main\config</directory><outputDirectory>\config</outputDirectory><includes><include>*.*</include></includes><fileMode>0644</fileMode></fileSet></fileSets><dependencySets><dependencySet><useProjectArtifact>true</useProjectArtifact><outputDirectory>lib</outputDirectory><!-- 将scope为runtime的依赖包打包到lib目录下。 --><scope>runtime</scope></dependencySet></dependencySets></assembly>



然后在主pom.xml中,加入如下一段内容:


Xml代码 复制代码  收藏代码
  1. <build>  
  2.       <plugins>  
  3.   
  4.           <plugin>  
  5.               <groupId>org.apache.maven.plugins</groupId>  
  6.               <artifactId>maven-assembly-plugin</artifactId>  
  7.               <configuration>  
  8.                   <!--<appendAssemblyId>true</appendAssemblyId>-->  
  9.                   <descriptors> <!--描述文件路径-->  
  10.                       <descriptor>src/main/assemble/package.xml</descriptor>  
  11.                   </descriptors>  
  12.               </configuration>  
  13.               <executions>  
  14.                   <execution>  
  15.                       <id>make-zip</id>  
  16.                       <!-- 绑定到package生命周期阶段上 -->  
  17.                       <phase>package</phase>  
  18.                       <goals>  
  19.                           <!-- 绑定到package生命周期阶段上 -->  
  20.                           <goal>single</goal>  
  21.                       </goals>  
  22.   
  23.                   </execution>  
  24.               </executions>  
  25.           </plugin>  
  26.   
  27.       </plugins>  
  28.   
  29.   </build>  
  <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><!--<appendAssemblyId>true</appendAssemblyId>--><descriptors> <!--描述文件路径--><descriptor>src/main/assemble/package.xml</descriptor></descriptors></configuration><executions><execution><id>make-zip</id><!-- 绑定到package生命周期阶段上 --><phase>package</phase><goals><!-- 绑定到package生命周期阶段上 --><goal>single</goal></goals></execution></executions></plugin></plugins></build>




至此,我们在执行mvn clean package 时,就会发现target目录下,多了一个zip的压缩包:





将zip包解压后,如下:







我们就可以直接将压缩包,传到linux上执行脚本启动了,需要注意的是,在windows下编辑的脚本文件,在linux上可能执行不成功,大家可以下载一个dos2unix的工具,对脚本格式重新修改即可。

参考资料:
http://www.cnblogs.com/JerryWang1991/p/3936378.html
http://skydream.iteye.com/blog/437937
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

这篇关于maven的assemble的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823606

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定