Maven3种打包⽅式中maven-assembly-plugin的使⽤详解Maven3种打包⽅式
maven-jar-plugin,默认的打包插件,⽤来打普通的project JAR包;
maven-shade-plugin,⽤来打可执⾏JAR包,也就是所谓的fat JAR包;
maven-assembly-plugin,⽀持⾃定义的打包结构,也可以定制依赖项等。
我们⽇常使⽤的以maven-assembly-plugin为最多,因为⼤数据项⽬中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采⽤assembly插件可以让输出的结构清晰⽽标准化。
要使⽤该插件,就在项⽬pom⽂件中加⼊以下内容。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}<version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptor>src/main/l</descriptor>
</configuration>
</plugin>
</plugins>
</build>
maven打包本地jar包assembly插件的打包⽅式是通过descriptor(描述符)来定义的。
Maven预先定义好的描述符有bin,src,project,jar-with-dependencies等。⽐较常⽤的是jar-with-dependencies,它是将所有外部依赖JAR都加⼊⽣成的JAR包中,⽐较傻⽠化。
但要真正达到⾃定义打包的效果,就需要⾃⼰写描述符⽂件,格式为XML。下⾯是我们的项⽬中常⽤的⼀种配置。
<assembly>
<id>assembly</id>
<formats>
<format&</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<includes>
<include>*.sh</include>
</includes>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/conf</directory>
<outputDirectory>conf</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/sql</directory>
<includes>
<include>*.sql</include>
</includes>
<outputDirectory>sql</outputDirectory>
</fileSet>
<fileSet>
<directory>target/classes/</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
<include>*.txt</include>
</includes>
<outputDirectory>conf</outputDirectory>
</fileSet>
</fileSets>
<files>
<file>
<source>target/${project.artifactId}-${project.version}.jar</source>
<outputDirectory>.</outputDirectory>
</file>
</files>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
id与formats
formats是assembly插件⽀持的打包⽂件格式,有zip、tar、、tar.bz2、jar、war。可以同时定义多个format。
id则是添加到打包⽂件名的标识符,⽤来做后缀。
也就是说,如果按上⾯的配置,⽣成的⽂件就是artifactId−{artifactId}-artifactId−{version}-。
fileSets/fileSet
⽤来设置⼀组⽂件在打包时的属性。
directory:源⽬录的路径。
includes/excludes:设定包含或排除哪些⽂件,⽀持通配符。
fileMode:指定该⽬录下的⽂件属性,采⽤Unix⼋进制描述法,默认值是0644。
outputDirectory:⽣成⽬录的路径。
files/file
与fileSets⼤致相同,不过是指定单个⽂件,并且还可以通过destName属性来设置与源⽂件不同的名称。
dependencySets/dependencySet
⽤来设置⼯程依赖⽂件在打包时的属性。也与fileSets⼤致相同,不过还有两个特殊的配置:
unpack:布尔值,false表⽰将依赖以原来的JAR形式打包,true则表⽰将依赖解成*.class⽂件的⽬录结构打包。
scope:表⽰符合哪个作⽤范围的依赖会被打包进去。compile与provided都不⽤管,⼀般是写runtime。
按照以上配置打包好后,将.⽂件上传到服务器,解压之后就会得到bin、conf、lib等规范化的⽬录结构,⼗分⽅便。
参考
到此这篇关于Maven3种打包⽅式中maven-assembly-plugin的使⽤的⽂章就介绍到这了,更多相关Maven打包⽅式maven-assembly-plugin的使⽤内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论