Maven的profile实现环境隔离+打包部署
【摘要】 1.环境隔离 1.在resource目录下创建多个环境的配置文件 2.在application.yml中配置激活的环境 3.使用maven的环境变量实现动态配置环境 1.sun-dependencies的pom.xml中配置(可以继承到所有子模块) 1.配置环境变量<!-- maven的环境变量env-flag的值为具体的值 --><profiles> <profile> ...
1.环境隔离
1.在resource目录下创建多个环境的配置文件
2.在application.yml中配置激活的环境
3.使用maven的环境变量实现动态配置环境
1.sun-dependencies的pom.xml中配置(可以继承到所有子模块)
1.配置环境变量
<!-- maven的环境变量env-flag的值为具体的值 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<env-flag>dev</env-flag>
</properties>
<!-- 默认为dev -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env-flag>test</env-flag>
</properties>
</profile>
<profile>
<id>beta</id>
<properties>
<env-flag>beta</env-flag>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env-flag>prod</env-flag>
</properties>
</profile>
</profiles>
2.build中配置filtering为true表示开启资源过滤
2.sun-demo的application.yml中动态读取环境变量
3.在maven中可以直接指定环境变量启动了
2.打包部署
1.父子模块配置(最全配置)
1.sun-dependencies配置打包的通用配置
<!-- 打包通用配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- maven插件版本号 -->
<version>3.8.1</version>
<configuration>
<!-- 配置编译使用的JDK版本 -->
<source>1.8</source>
<target>1.8</target>
<!-- 配置注解处理器的位置,这里以Lombok和MapStruct为例 -->
<annotationProcessorPaths>
<!-- Lombok 注解处理器 -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<!-- MapStruct 注解处理器 -->
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
<resources>
<!-- 配置资源文件,这里主要是指 src/main/resources 目录 -->
<resource>
<directory>src/main/resources</directory>
<!-- 配置了这个,则 Maven 的环境变量就可以填充到 application-xxx.yml 中(用 $ 符号取),可用于环境隔离 -->
<filtering>true</filtering>
</resource>
<!-- 可选:如果项目中有需要打包的 XML 文件,可以添加这部分配置 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
2.在需要打包的子模块使用SpringBoot的打包插件
<!-- maven 打包常规配置 -->
<build>
<!-- 打包成 jar 包时的名字为项目的artifactId -->
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 引用父模块中统一管理的插件版本(与SpringBoot的版本一致!) -->
<version>${spring-boot.maven.plugin.version}</version>
<configuration>
<!-- 指定项目的主启动类(大多数SpringBoot项目可以自动检测) -->
<mainClass>com.sunxiansheng.user.UserApplicaion</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!-- 将所有的依赖包都打到这个模块中 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.最简化配置
<build>
<!-- 设置生成的 JAR 文件的名称为项目的 artifactId -->
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- Maven 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 配置编译使用的JDK版本 -->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- Spring Boot Maven 插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 统一管理的插件版本(与SpringBoot的版本一致!) -->
<version>${spring-boot.maven.plugin.version}</version>
<executions>
<execution>
<goals>
<!-- 将所有的依赖包都打到这个模块中 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)