打jar包,很大,发服务器也慢。get到一种打包方式。直接挨着cv直接就能用
一、src目录下创建assembly文件夹下assembly.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>release-${platform}</id>
<formats>
<format>${platform.format}</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<files>
<file>
<source>./target/${output.software.name}/${output.software.name}-${output.software.version}.jar</source>
<outputDirectory></outputDirectory>
<fileMode>755</fileMode>
</file>
</files>
<fileSets>
<fileSet>
<directory>./target/${output.software.name}/${output.software.config}</directory>
<outputDirectory>${output.software.config}</outputDirectory>
</fileSet>
<fileSet>
<directory>./target/${output.software.name}/${output.software.libs}</directory>
<outputDirectory>${output.software.libs}</outputDirectory>
</fileSet>
</fileSets>
</assembly>
二、配置yml、pom,加入maven插件
spring:
profiles:
active: @spring.auto.active@ #多环境配置,读取的pom里面properties配置的熟悉
<properties>
<!-- 打包输出软件名称 -->
<output.software.name>RedisService</output.software.name>
<!-- 打包输出依赖包路径 -->
<output.software.libs>lib</output.software.libs>
<!-- 打包输出配置文件路径 -->
<output.software.config>config</output.software.config>
<!-- 打包输出软件版本号 -->
<output.software.version>1.0.0</output.software.version>
<!-- 启动类完成名称 -->
<output.software.mainclass>club.lyq.RedisService</output.software.mainclass>
<!-- 激活配置 -->
<spring.auto.active>dev</spring.auto.active>
<!-- platform 配置保持为空,就是assembly.xml中取参数-->
<platform>linux-x86_64</platform>
<platform.format>tar.gz</platform.format>
</properties>
<build>
<finalName>${output.software.name}-${output.software.version}</finalName>
<resources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!--支持yaml读取pom的参数-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
<!-- 这个插件是用来复制项目的静态资源-->
<executions>
<execution>
<!-- 自定义 -->
<id>copy-resources</id>
<phase>package</phase>
<goals>
<!-- 复制静态资源 -->
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<!-- 指定静态资源的路径 -->
<directory>target/classes</directory>
<!-- 指定需要复制的文件 -->
<includes>
<include>application.properties</include>
<include>bootstrap.yml</include>
<include>application.yml</include>
<include>application-${spring.auto.active}.yml</include>
</includes>
</resource>
</resources>
<!-- 指定复制到该目录下 -->
<outputDirectory>
${project.build.directory}/${output.software.name}/${output.software.config}
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 打JAR包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- 不打包资源文件(配置文件和依赖包分开) -->
<excludes>
<exclude>application*.yml</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>${output.software.libs}/</classpathPrefix>
<!-- jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口类 -->
<mainClass>${output.software.mainclass}</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<Class-Path>./${output.software.config}/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}/${output.software.name}</outputDirectory>
</configuration>
</plugin>
<!-- 这个插件是用来复制项目依赖的jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<!-- 自定义 -->
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<!-- 复制依赖的jar包 -->
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 将依赖的jar包复制到该路径下 -->
<outputDirectory>
${project.build.directory}/${output.software.name}/${output.software.libs}
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 以上配置后你的文件打包后的文件目录如下
-lib
-config
-项目名.jar
-->
<!-- 这个插件使用来将分离出来的静态资源和依赖的jar包(就是上面说到的文件目录),压缩成一个zip文件。个人感觉这个蛮方便的 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- 这个插件需要指定一个配置文件 【重点:这里的assembly.xml 就是讲到分层打包】 -->
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<!-- 自定义 -->
<id>make-assembly</id>
<phase>package</phase>
<goals>
<!-- 只执行一次 -->
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
三、执行maven打包命令,我直接用的idea的package
打包好后形成
lib:项目的依赖jar包
config:配置文件,如bootstrap.yml、application.yml、application.properties
jar:写的代码jar