ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

maven profiles多环境配置

2019-06-14 20:03:20  阅读:277  来源: 互联网

标签:src 配置 profiles maven filters main true


maven profiles多环境配置

转载。 https://blog.csdn.net/runbat/article/details/81747874

今天做了一个小项目,需要配置开发、测试、预发布、生产四套环境配置文件,正常是用配置中心的,但是我的项目还没上线,所以想下maven的profiles+filters,我看了下官网对profiles的介绍,官网profiles地址,一个字,累。

开始吧,要想实现多环境打包,总共分6步

步骤一、在src/main 下创建filters文件夹,maven文件目录结构里建议有filters文件夹(感兴趣的可以自己查下maven文件结构),这个和filters配合使用

步骤二、编写profiles, 这里需要说明两点 1:<properties>节点里的名字[profile-name] 这个可以自己定义,后面的<filter>节点要用到

     2:  <activation><activeByDefault>true</activeByDefault></activation> 默认激活环境,一定要有,不然${profile-name}会报异常

  1.   <profiles>
  2.   <profile>
  3.   <id>dev</id>
  4.   <properties>
  5.   <profile-name>dev</profile-name>
  6.   </properties>
  7.   </profile>
  8.   <profile>
  9.   <id>test</id>
  10.   <properties>
  11.   <profile-name>test</profile-name>
  12.   </properties>
  13.   <activation>
  14.   <activeByDefault>true</activeByDefault>
  15.   </activation>
  16.   </profile>
  17.   <profile>
  18.   <id>prod</id>
  19.   <properties>
  20.   <profile-name>prod</profile-name>
  21.   </properties>
  22.   </profile>
  23.   <profile>
  24.   <id>pre</id>
  25.   <properties>
  26.   <profile-name>pre</profile-name>
  27.   </properties>
  28.   </profile>
  29.   </profiles>

步骤三、编写filters ,再次强调${profile-name} 是<profile>的properties里的自定义的名字,profiles 必须指定默认激活环境,参看步骤二

  1.   <build>
  2.   <filters>
  3.   <filter>src/main/filters/application_${profile-name}.properties</filter>
  4.   </filters>
  5.   ...... 省略其它配置
  6.   <build>

步骤四、在build里添加<resources>,maven打包默认会把src/main/resources下的文件都打包,并且指定是否要开启filtering,设置为true 会加载filters文件夹下符合要求的文件中的值

  1.   <resources>
  2.   <resource>
  3.   <directory>src/main/resources</directory>
  4.   <filtering>true</filtering>
  5.   <excludes>
  6.   <exclude>src/main/resources/application_backup.properties</exclude>
  7.   </excludes>
  8.   </resource>
  9.   </resources>

步骤五、在build里添加maven打包插件,我使用了maven-assembly-plugin自定义打包插件,它需要自定义一个xml文件,

<descriptor>src/main/assembly/package.xml</descriptor>
  1.   <plugin>
  2.   <artifactId>maven-assembly-plugin</artifactId>
  3.   <version>3.1.0</version>
  4.   <executions>
  5.   <execution>
  6.   <id>make-assembly</id>
  7.   <phase>package</phase>
  8.   <goals>
  9.   <goal>single</goal>
  10.   </goals>
  11.   <configuration>
  12.   <descriptors>
  13.   <descriptor>src/main/assembly/package.xml</descriptor>
  14.   </descriptors>
  15.   </configuration>
  16.   </execution>
  17.   </executions>
  18.   </plugin>

package.xml文件

  1.   <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
  2.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.   xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  4.   <id>${profile-name}</id>
  5.   <formats>
  6.   <format>zip</format>
  7.   </formats>
  8.   <includeBaseDirectory>false</includeBaseDirectory>
  9.   <fileSets>
  10.   <fileSet>
  11.   <directory>${basedir}/src/main/resources/</directory>
  12.   <includes>
  13.   <include>application.properties</include>
  14.   </includes>
  15.   <outputDirectory>config</outputDirectory>
  16.   <filtered>true</filtered>
  17.   </fileSet>
  18.   <fileSet>
  19.   <directory>${basedir}/target/</directory>
  20.   <includes>
  21.   <include>${project.artifactId}-${project.version}.jar</include>
  22.   </includes>
  23.   <outputDirectory>.</outputDirectory>
  24.   </fileSet>
  25.   <fileSet>
  26.   <directory>${basedir}/target/scripts/</directory>
  27.   <includes>
  28.   <include>*.sh</include>
  29.   </includes>
  30.   <directoryMode>755</directoryMode>
  31.   <outputDirectory>bin</outputDirectory>
  32.   </fileSet>
  33.   <fileSet>
  34.   <directory>${project.build.outputDirectory}/docs</directory>
  35.   <includes>
  36.   <include>*.*</include>
  37.   </includes>
  38.   <outputDirectory>docs</outputDirectory>
  39.   </fileSet>
  40.   </fileSets>
  41.   </assembly>

步骤六、打包 -P 指定打包环境,-Dmaven.test.skip=true 跳过测试,不然的话会检查配置文件是否能正常连接等等,比如会测试zk是否可用啊什么的,如果不可以打包会失败的。开发环境和线上肯定是隔离的,所以要指定跳过检查。生成的包在项目目录下的target文件夹下,mvn package会生成target文件夹  mvn clean会清除target文件夹的内容。

mvn package -P [profile-name] -Dmaven.test.skip=true

标签:src,配置,profiles,maven,filters,main,true
来源: https://www.cnblogs.com/shoshana-kong/p/11025222.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有