Maven Springboot 打包指定配置

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> -->
        <!--         &lt;!&ndash; 指定为true是,属性文件的占位符解析表达式就可以读取pom属性了 &ndash;&gt; -->
        <!--         <filtering>true</filtering> -->
        <!--         <includes> -->
        <!--             &lt;!&ndash; 这里只能读取到pom本身的变量,从properties读取的值这里取不到 &ndash;&gt; -->
        <!--             <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> -->
           <!--                   &lt;!&ndash; ${project.build.directory}target目录 &ndash;&gt; -->
           <!--                   <outputDirectory>${project.build.directory}/lib</outputDirectory> -->

           <!--                   &lt;!&ndash; 不复制间接依赖 &ndash;&gt; -->
           <!--                   &lt;!&ndash;  <excludeTransitive>true</excludeTransitive> &ndash;&gt; -->
           <!--                   &lt;!&ndash;  <stripVersion>true</stripVersion> &ndash;&gt; -->
           <!--                   &lt;!&ndash; 不复制scope=provided的依赖包 &ndash;&gt; -->
           <!--                   &lt;!&ndash; <excludeScope>provided</excludeScope> &ndash;&gt; -->
           <!--               </configuration> -->
           <!--           </execution> -->
           <!--       </executions> -->
           <!--   </plugin> -->
        </plugins>
    </build>
</project>

参考

1、pom 文件中打包配置-resources 、maven-resources-plugin
2、SpringBoot打包时复制指定配置文件到指定目录,并剔除jar包内所有配置文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容