Maven在传统Spring项目中支持多环境打包

本文以单体架构为例,技术体系采用单纯Spring框架(未结合SpringBoot下回分解),在开发环境中支持多环境打包配置。常见环境有:开发、测试、与测试、生产等。本文采用Maven打包插件maven-resources-plugin为例详细说明如何配置及打包。

Maven等相关知识不是本文重点,如需要深入了解,欢迎自行谷歌或度娘。

一、常见配置目录分类如下:

图片

通过以目录的形式约定配置文件的存放地址,如dev下存放开发环境相关数据库地址,用户名密码,redis的相关地址,Mq等中间件的地址等。

二、在pom.xml中定义相关环境标识。

<profiles>        <profile>            <id>dev</id>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>                <package.environment>dev</package.environment>            </properties>        </profile>        <profile>            <id>test</id>            <properties>                <package.environment>test</package.environment>            </properties>        </profile>        <profile>            <id>prod</id>            <properties>                <package.environment>prod</package.environment>            </properties>        </profile>    </profiles>

说明,activeByDefault表示默认使用开发环境。

三、插件配置​​​​​​​

<build>        <finalName>${project.artifactId}</finalName>        <resources>            <resource>                <directory>src/main/java</directory>                <includes>                    <include>**/*.xml</include>                    <include>**/*.xls</include>                    <include>**/*.xlsx</include>                    <include>**/*.bpmn</include>                </includes>            </resource>            <resource>                <directory>src/main/resources</directory>                <filtering>true</filtering>                <includes>                    <include>**/*.properties</include>                    <include>**/*.xml</include>                    <include>**/*.xsd</include>                </includes>                <excludes>                    <exclude>dev/*</exclude>                    <exclude>test/*</exclude>                    <exclude>prod/*</exclude>                </excludes>            </resource>        </resources>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>${java.version}</source>                    <target>${java.version}</target>                    <encoding>${project.build.sourceEncoding}</encoding>                </configuration>            </plugin>            <!-- 不同环境的配置文件选择 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <version>2.6</version>                <executions>                    <execution>                        <id>copy-resources</id>                        <phase>compile</phase>                        <goals>                            <goal>copy-resources</goal>                        </goals>                        <configuration>                            <!-- 覆盖原有文件 -->                            <overwrite>true</overwrite>                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>                            <!-- 也可以用下面这样的方式(指定相对url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->                            <!-- 待处理的资源定义 -->                            <resources>                                <resource>                                    <!-- 指定resources插件处理哪个目录下的资源文件 -->                                    <directory>src/main/resources/${package.environment}</directory>                                    <filtering>false</filtering>                                </resource>                            </resources>                        </configuration>                    </execution>                </executions>            </plugin>        </plugins>    </build>

以上是Maven多环境打包配置详情。原理是采用maven的打包命令,通过打包插件去自动加载指定环境的配置文件,即可实现项目的多环境支持。结合Jenkins可进行多环境推送发布。

四、打包​​​​​​​

mvn clean package -Pdevmvn clean package -Ptest

通过执行maven的package打包命令,-P指定环境,即可实现预期目的。

以上就是在传统java开发模式中,如何使用maven进行多环境支持。希望还在查找相关资料的朋友有所收获。避免人工打包的原始方式,欢迎各位朋友交流讨论项目工程研发最佳实践,共同提高效率。

图片

おすすめ

転載: blog.csdn.net/yelangkingwuzuhu/article/details/113039392