美文网首页Java
Maven Springboot 打包指定配置

Maven Springboot 打包指定配置

作者: 丿星纟彖彳亍 | 来源:发表于2023-03-26 11:02 被阅读0次

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包内所有配置文件

相关文章

  • Maven 打包常用命令

    maven command 打包 打包跳过测试 打包指定环境 maven 打包 启动jar指定环境

  • springboot 打包部署到docker

    1.springboot 打包 pom.xml文件配置 打包命令使用vscode的maven 插件的install...

  • 2018-11-30

    Springboot maven项目打包发布到远程服务器流程: 1.配置pom环境 dev ...

  • Maven常见问题

    指定jdk的版本 springboot生成的jar没有主配置清单 maven生成的jar包 参考文章

  • Maven常用配置

    本文介绍了使用Maven作为构建工具的常用配置,包括指定jdk版本,jar包和依赖分开打包,多环境打包,配置私服,...

  • maven notes

    maven命令行打包指定配置文件和仓库地址 mvn -U clean install --settings D:\...

  • Springboot打包(一) jar包

    1.配置server端口: server:port: 80802.在Maven中指定启动类,打包方式 jar

  • [java]maven编译没有mapper.xml

    springboot的maven插件请指定资源路径!!!

  • springboot环境使用

    idea maven创建springboot项目 maven的settings.xml配置国内源配置: 配置pro...

  • docker部署springboot

    1 打包springboot项目 maven install ,打包为lib和jar 2 编写Dockerfil...

网友评论

    本文标题:Maven Springboot 打包指定配置

    本文链接:https://www.haomeiwen.com/subject/pnqbrdtx.html