Maven项目多环境构建的最小配置方案指南

简介: 同一项目为不同环境构建总是个麻烦事。你可能有测试和生产服务器,也可能有一组服务器运行同一个应用,但使用不同的配置参数。本指南意在使用侧面(profiles) 来对项目进行指定环境打包。可以参考Profile概念的介绍以了解更多。

喜欢E文的直接看原文:https://maven.apache.org/guid...

同一项目为不同环境构建总是个麻烦事。你可能有测试和生产服务器,也可能有一组服务器运行同一个应用,但使用不同的配置参数。本指南意在使用侧面(profiles) 来对项目进行指定环境打包。可以参考Profile概念的介绍以了解更多。


提示


本指南假设你对 Maven 2 有基本的了解。会有简单的maven设置介绍。简单是指你的项目配置里仅有少数文件根据环境的不同有所变化。两维甚至多维度配置变化时有其他更好的解决方法。

这个例子中采用标准的目录结构:

pom.xml
src/
  main/
    java/
    resources/
  test/
    java/


在 src/main/resources 下有三个文件:

  • environment.properties - 这是默认配置并会打包到最终发布包里.
  • environment.test.properties - 这是用于测试的配置方案.
  • environment.prod.properties - 这是与测试方案类似用于生产环境的配置.

在项目描述符里, 你需要配置不同的profiles. 这里只列出的测试用的profile.

<profiles>
   <profile>
     <id>test</id>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-antrun-plugin</artifactId>
           <executions>
             <execution>
               <phase>test</phase>
               <goals>
                 <goal>run</goal>
               </goals>
               <configuration>
                 <tasks>
                   <delete file="${project.build.outputDirectory}/environment.properties"/>
                   <copy file="src/main/resources/environment.test.properties"
                         tofile="${project.build.outputDirectory}/environment.properties"/>
                 </tasks>
               </configuration>
             </execution>
           </executions>
         </plugin>
         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <configuration>
             <skip>true</skip>
           </configuration>
         </plugin>
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>jar</goal>
               </goals>
               <configuration>
                 <classifier>test</classifier>
               </configuration>
             </execution>
           </executions>
         </plugin>
       </plugins>
     </build>
   </profile>
   .. Other profiles go here ..
</profiles>


这段代码里配置了三件事:

  1. 配置了 antrun 插件在测试阶段运行,将拷贝environment.test.properties文件到 environment.properties.
  2. 配置了在编译测试包和生成包时测试插件跳过所有测试. 这可能对你有用,因为你可能不想对生产环境进行测试。
  3. 配置了JAR插件用于创建带test修饰标识的JAR包。


激活执行这个profile办法是 mvn -Ptest install ,除正常步骤还将执行Profile里定义的步骤. 你将得到两人个包, "foo-1.0.jar" 和 "foo-1.0-test.jar". 这两个包是一样的.


小心


Maven 2 不能只编有修饰符的包. (i.e. 他非要生成包) 所以搞出来俩一样的. JAR插件需要改进啊。能编到不同目录下会更好。

使用删除任务看上去有些怪异,只是为了确保能拷贝文件。拷贝任务会看源文件和目标文件的时间戳, 只拷贝和上次不同的文件.

编译后配置文件会在 target/classes 中, 他不会被覆盖,因为resources插件也使用同样的时间戳检查, 所以按这个profile构建时总要清理.

所以强制你每次构建时只能为单一环境构建一个单一的包.然后 "mvn clean" 如果你更改了profile选项参数. 要不的话你会把不同环境的配置混到一块去啦。


文献


侧面构建入门

标准目录结构

相关文章
|
3天前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
34 8
|
26天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
107 1
Maven——创建 Spring Boot项目
|
28天前
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1107 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
16天前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
31 1
|
17天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
26天前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
79 1
|
3月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
145 1
|
29天前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
21 1
如何使用 maven 创建一个 Spring Boot项目
|
1月前
|
Java Maven Kotlin
idea maven创建kotlin项目
本文介绍了在IntelliJ IDEA中使用Maven创建Kotlin项目的步骤,包括在`pom.xml`文件中添加Maven中央仓库、配置`kotlin-maven-plugin`插件、指定源目录、添加测试插件和执行插件,以及添加Kotlin测试依赖和标准库依赖。文中还提到了如何通过更换镜像或使用代理来解决依赖下载速度慢的问题,并展示了运行示例代码的截图。
70 4
idea maven创建kotlin项目
|
1月前
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
79 2
eclipse创建maven项目

推荐镜像

更多
下一篇
无影云桌面