基本支持
-
打出来的包自定义名称
<build> <finalName>新的名称</finalName> </build>
例如
<build> <finalName>lianglianglee-${version}</finalName> </build>
打出来的包,就是lianglianglee-1.0.jar 版本号取project版本号
-
静态资源打入包中
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
directory可以是任何项目内文件夹
利用插件
插件名称 maven-assembly-plugin
官方提供的打包方式: bin, jar-with-dependencies, src, project
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
-
自定义打包方式
在项目中创建一个package.xml文件
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<!--模版ID-->
<id></id>
<!-- 生成的包类型-->
<formats>
<format>tar.gz</format>
</formats>
<!-- 工程打包内容 就是jar的打包-->
<dependencySets>
<dependencySet>
<!--输出到jar的哪个位置-->
<outputDirectory></outputDirectory>
</dependencySet>
</dependencySets>
<!-- 管理最后包中的内容-->
<fileSets>
<fileSet>
<!-- 包含的文件(夹)-->
<includes>
<include></include>
</includes>
<!--排除的文件(夹)-->
<excludes>
<exclude></exclude>
</excludes>
<!--自定义文件权限-->
<fileMode></fileMode>
</fileSet>
</fileSets>
<!-- 引入的文件列表-->
<files>
<file>
<!-- 源文件-->
<source></source>
<!-- 输出的相对路径-->
<outputDirectory></outputDirectory>
<!-- 重命名-->
<destName></destName>
<!-- 权限-->
<fileMode></fileMode>
</file>
</files>
</assembly>
模版配置
实战
我现在的场景是
打出标准的SpringBoot项目包
最终生成一个zip,一个tar.gz
将application.yml打包到压缩包的跟路径
将start.sh,stop.sh打到压缩包跟路径,并配置权限
POM.xml配置
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<finalName>gems-${version}</finalName>
<descriptors>
<descriptor>package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
自定义配置文件配置
package.xml和POM同目录
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<!-- 项目打成Zip包的Id -->
<id>zip-targz</id>
<formats>
<!-- 包的后缀 -->
<format>zip</format>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<!-- 项目一些说明的资源输出的目录,下面为当前目录 -->
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>src\main\resources</directory>
<!-- 指定那些文件需要复制进该目录下 -->
<includes>
<include>application.yml</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>target</directory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
<files>
<file>
<source>start.sh</source>
<fileMode>0551</fileMode>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>stop.sh</source>
<fileMode>0551</fileMode>
<outputDirectory>/</outputDirectory>
</file>
</files>
</assembly>
打出的包 target目录下:
压缩包内:
热门评论
请问前辈一个问题,就是这种方式打包,我试了好多次,发现我在外部修改配置文件,但是jar包是不生效的,前辈有碰到这种情况吗?