maven 打包工具
使用maven对项目进行打包,可用以下三种plugin
- maveb-jar-plugin : maven默认打包插件,用来创建project jar
- maven-shade-plugin : 用来打可执行包(executable jar)
- maven-assembly-plugin : 支持定制化打包方式
maven-assembly-plugin 打包插件使用
在pom文件中引入插件
build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
<finalName>${project.artifactId}</finalName>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置assembly.xml
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<outputDirectory>bin</outputDirectory>
<directory>src/main/bin</directory>
<fileMode>0755</fileMode>
<lineEnding>unix</lineEnding>
<filtered>true</filtered>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
<fileSet>
<outputDirectory>resources</outputDirectory>
<directory>src/main/resources</directory>
<fileMode>0644</fileMode>
<filtered>false</filtered>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
<fileSet>
<outputDirectory>conf</outputDirectory>
<directory>src/main/conf</directory>
<fileMode>0644</fileMode>
<lineEnding>unix</lineEnding>
<filtered>false</filtered>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>
assembly.xml 文档结构
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id> id标识符,添加到生成文件名称的后缀符。如上面配置package,打包后文件尾部添加package后缀</id>
<formats>
<format>支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式</format>
</formats>
<includeBaseDirectory>是否包含项目根目录,true-包含根目录;false-不包含根目录</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>依赖jar包以及项目打包文件存储文件目录</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<outputDirectory>指定文件集合的输出目录,该目录是相对于根目录</outputDirectory>
<includes>包含文件</includes>
<excludes>排除文件</excludes>
<directory>指定要打包的文件目录</directory>
<fileMode>文件权限</fileMode>
<directoryMode>目录权限</directoryMode>
<lineEnding>设置此文件集中文件的行结束符。有效值: “keep” - 保留所有的行结束 “unix” - 使用Unix风格的行尾(即“\ n”) “lf” - 使用一个换行符结束符(即“\ n”) “dos” - 使用DOS / Windows风格的行尾(即“\ r \ n”) “windows” - 使用DOS / Windows风格的行尾(即“\ r \ n”) “crlf” - 使用回车,换行符结尾(即“\ r \ n”)</lineEnding>
<filtered>是否在复制文件时过滤符号,使用构建配置中的属性。(从2.2-beta-1开始) 默认值是:false。</filtered>
<useDefaultExcludes>在计算受该集合影响的文件时,是否应该使用标准排除模式,例如那些匹配CVS和Subversion元数据文件的排除模式。为了向后兼容,默认值是true。(从2.2-beta-1开始) 默认值是:true。</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>