Maven 打包指定配置
实现源码和依赖分开打包,指定配置文件打包
依赖和源码分开打包,配置路径project.build.plugins
<!--打包自己的代码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 入口程序-修改为自己的启动类名 -->
<mainClass>com.bsoft.gzjkpt.GzjkptApplication</mainClass>
<!-- 添加依赖jar路径 -->
<addClasspath>true</addClasspath>
<!-- 单个服务可以改../lib为lib 这样jar和lib就应该放在同级-->
<classpathPrefix>lib</classpathPrefix>
</manifest>
</archive>
<!--不打入jar包的文件类型或者路径 这个和resources文件指定异曲同工,可选择性配置-->
<excludes>
<exclude>config/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- 打包依赖到lib, 打过之后如果没有更新可以屏蔽 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- ${project.build.directory}target目录 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!-- 不复制间接依赖 -->
<!-- <excludeTransitive>true</excludeTransitive> -->
<!-- <stripVersion>true</stripVersion> -->
<!-- 不复制scope=provided的依赖包 -->
<!-- <excludeScope>provided</excludeScope> -->
</configuration>
</execution>
</executions>
</plugin>
指定配置文件打包
准备工作
[[Maven Springboot项目配置文件相互读取]] 或者 简书链接
打包配置
1、指定配置文件 路径为project.build
下面
<!-- 指定配置文件 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 指定为true是,属性文件的占位符解析表达式就可以读取pom属性了 -->
<filtering>true</filtering>
<includes>
<!-- 这里只能读取到pom本身的变量,从properties读取的值这里取不到,如果能,就不用配置下面的了 -->
<!-- <include>config/application-${profileActive}.properties</include> -->
<include>application.properties</include>
<include>config.properties</include>
<include>log4j2.xml</include>
<include>init.yml</include>
</includes>
</resource>
</resources>
指定分支配置文件复制到资源文件根目录,配置路径为project.build.plugins
<!-- 把指定配置文件复制到指定目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources/config</directory>
<includes>
<include>application-${profileActive}.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE xml>-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bsoft</groupId>
<artifactId>gzjkpt</artifactId>
<version>2.0.0</version>
<name>${profileActive}</name>
<description>创业慧康贵州接口平台_统合板</description>
<properties>
<java.version>1.8</java.version>
<!-- properties、yml中配置的属性 -->
<profileActive>${spring.profiles.active}</profileActive>
</properties>
<dependencies>
</dependencies>
<build>
<finalName>${artifactId}-${name}</finalName>
<!-- 指定主配置文件 打包发布时打开这个配置(简化配置文件,安全),
平时也可以打开(本地运行前请先打包! 打包!! 打包!!! 或者在运行配置增加Maven前置动作) -->
<!-- <resources> -->
<!-- <resource> -->
<!-- <directory>src/main/resources</directory> -->
<!-- <!– 指定为true是,属性文件的占位符解析表达式就可以读取pom属性了 –> -->
<!-- <filtering>true</filtering> -->
<!-- <includes> -->
<!-- <!– 这里只能读取到pom本身的变量,从properties读取的值这里取不到 –> -->
<!-- <include>config/application-${name}.properties</include> -->
<!-- <include>*.properties</include> -->
<!-- <include>*.xml</include> -->
<!-- <include>*.yml</include> -->
<!-- </includes> -->
<!-- </resource> -->
<!-- </resources> -->
<plugins>
<!-- 读取properties文件 -->
<plugin>
<!-- <groupId>org.codehaus.mojo</groupId> -->
<!-- <artifactId>properties-maven-plugin</artifactId> -->
<!-- <version>1.0-alpha-2</version> -->
<groupId>it.ozimov</groupId>
<artifactId>yaml-properties-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/main/resources/application.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<skip>true</skip>
</configuration>
</plugin>
<!-- 把指定配置文件复制到指定目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<!-- 更改在什么时候执行,参考Lifecycle, compile级别以上-->
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources/config</directory>
<includes>
<include>application-${profileActive}.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!--打包自己的代码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 入口程序-修改为自己的启动类名 -->
<mainClass>com.bsoft.gzjkpt.GzjkptApplication</mainClass>
<!-- 添加依赖jar路径 -->
<addClasspath>true</addClasspath>
<!-- 单个服务可以改../lib为lib 这样jar和lib就应该放在同级-->
<classpathPrefix>lib</classpathPrefix>
</manifest>
</archive>
<!--不打入jar包的文件类型或者路径 和resources文件指定异曲同工,可选择性配置-->
<excludes>
<exclude>config/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- 打包依赖到lib, 打过之后如果没有更新可以屏蔽 -->
<!-- <plugin> -->
<!-- <groupId>org.apache.maven.plugins</groupId> -->
<!-- <artifactId>maven-dependency-plugin</artifactId> -->
<!-- <executions> -->
<!-- <execution> -->
<!-- <id>copy-dependencies</id> -->
<!-- <phase>package</phase> -->
<!-- <goals> -->
<!-- <goal>copy-dependencies</goal> -->
<!-- </goals> -->
<!-- <configuration> -->
<!-- <!– ${project.build.directory}target目录 –> -->
<!-- <outputDirectory>${project.build.directory}/lib</outputDirectory> -->
<!-- <!– 不复制间接依赖 –> -->
<!-- <!– <excludeTransitive>true</excludeTransitive> –> -->
<!-- <!– <stripVersion>true</stripVersion> –> -->
<!-- <!– 不复制scope=provided的依赖包 –> -->
<!-- <!– <excludeScope>provided</excludeScope> –> -->
<!-- </configuration> -->
<!-- </execution> -->
<!-- </executions> -->
<!-- </plugin> -->
</plugins>
</build>
</project>
参考
1、pom 文件中打包配置-resources 、maven-resources-plugin
2、SpringBoot打包时复制指定配置文件到指定目录,并剔除jar包内所有配置文件