maven配置打包springboot单体项目多环境切换

效果:在idea的maven tab页可以根据环境选择打包。不需要手动更改application里的spring.profile.active配置;lib依赖包外置,减少jar体积,config包外置,便于线上修改配置

resource文件夹

  • application.yml
  • application-dev.yml
  • application-prod.yml
  • application-test.yml

pom文件配置

<profiles>
  <profile>
    <!-- 本地开发环境 -->
    <id>dev</id>
    <properties>
      <profiles.active>dev</profiles.active>
    </properties>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
  <profile>
    <!-- 生产环境 -->
    <id>prod</id>
    <properties>
      <profiles.active>prod</profiles.active>
    </properties>
  </profile>
  <!--测试环境-->
  <id>test</id>
    <properties>
      <profiles.active>test</profiles.active>
    </properties>
  </profile>
</profiles>

pom文件配置完会在这边显示
在这里插入图片描述
application文件的配置

spring:
	profiles:
		active: @profiles.active@

上述配置好,就可以通过maven来切换环境了
下面来配置打包
pom文件

<build>
  <!-- 生成的文件名 -->
  <finalName>${project.artifactId}</finalName>
  <resources>
    <resource>
      <!-- 指定resources插件处理哪个目录下的资源文件 -->
      <directory>src/main/resources</directory>
      <!--开启过滤 排除指定文件打包-->
      <filtering>true</filtering>
      <!-- 排除directory指定目录下的以下文件 -->
      <excludes>
        <exclude>application-dev.yml</exclude>
        <exclude>application-druid.yml</exclude>
        <exclude>application.yml</exclude>
      </excludes>
    </resource>
    <!-- 指定生成到classes文件夹的配置文件 这里一定要配置,否则idea本地启动就启动不了 -->
    <resource>
      <filtering>true</filtering>
      <directory>src/main/resources</directory>
      <includes>
        <include>application-${profiles.active}.yml</include>
        <include>application.yml</include>
      </includes>
    </resource>
    <!-- 复制application公共配置文件到config文件夹 -->
    <resource>
      <filtering>true</filtering>
      <directory>src/main/resources</directory>
      <targetPath>${project.build.directory}/config</targetPath>
      <includes>
        <include>application.yml</include>
      </includes>
    </resource>
  </resources>

  <plugins>
    <!-- springboot maven打包插件 repackage成可执行jar -->
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>2.1.1.RELEASE</version>
      <configuration>
        <mainClass>com.hy.HyOpenAPIApplication</mainClass>
        <layout>ZIP</layout>
        <includes>
          <include>
            <groupId>nothing</groupId>
            <artifactId>nothing</artifactId>
          </include>
        </includes>
        <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <!-- 资源文件maven 打包 插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>3.2.0</version>
      <executions>
        <execution>
          <id>copy-resources</id>
          <phase>package</phase>
          <goals>
            <goal>copy-resources</goal>
          </goals>
          <configuration>
            <resources>
              <resource>
                <directory>src/main/resources</directory>
                <includes>
                  <include>i18n/*</include>
                  <include>application-${profiles.active}.yml</include>
                </includes>
              </resource>
            </resources>
            <outputDirectory>${project.build.directory}/config</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>3.2.0</version>
      <executions>
        <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <includeScope>runtime</includeScope>
            <overWriteReleases>false</overWriteReleases>
            <overWriteSnapshots>false</overWriteSnapshots>
            <overWriteIfNewer>true</overWriteIfNewer>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <!-- 打包成jar包的maven插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.2.0</version>
      <configuration>
        <archive>
          <manifest>
            <!-- 指定入口函数 -->
            <mainClass>com.hy.HyOpenAPIApplication</mainClass>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
          </manifest>
        </archive>
        <!--不打入jar包的文件类型或者路径-->
        <excludes>
          <exclude>**/*.yml</exclude>
        </excludes>
      </configuration>
    </plugin>
    <!-- 打包成war包的maven插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <warName>${project.artifactId}</warName>
      </configuration>
    </plugin>
  </plugins>
</build>

这样配置好,就可以达到所要求的效果了
生成的打包目录:
target:
- config
- lib
- xxx.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值