maven工具不同环境打包加载属性方式

一:浩言

细水长流,岁月静好,需要一颗不折腾的心,更需要一颗明白的心。每个人的内心都需要一个空间。
<h5 align = "right">----------------《不畏将来不恋过去》</h5>


二:背景

年底了,我的工作终于开始收尾了,从12月份吧开始重构项目,到现在一直在忙着迁移和新做接口,还有其他项目的各种问题需要跟进。最近API接口进行收尾工作,可是开完最后的接口每次处理配置文件好麻烦,每次上测试生产都是要注释,然后在注释回去,近期没有那么忙了,就开始把这个问题都给解决了。
直接上配置说明了。尝试了两种方式,个人比较推荐第一种
2.1 通过profiles来指定环境配置如下:

Paste_Image.png

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>testProfile</groupId>
  <artifactId>testProfile</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>testProfile</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<profiles>
    <profile>  
        <id>test</id>  
        <properties>  
            <package.environment>test</package.environment>  
        </properties>  
    </profile>  
    <profile>  
        <id>production</id>  
        <properties>  
            <package.environment>production</package.environment>  
        </properties>  
         <activation>  
                <activeByDefault>true</activeByDefault>  
          </activation>
    </profile>  
    <profile>  
        <id>development</id>  
        <properties>  
            <package.environment>development</package.environment>  
        </properties>  
    </profile>  
</profiles>
<build>
<resources>
        <resource>
            <directory>src/main/resources</directory>  
            <excludes>  
                <exclude>test/**</exclude>    
                <exclude>production/**</exclude>    
                <exclude>development/**</exclude>    
            </excludes>  
            <filtering>true</filtering>        
        </resource>
        <resource>    
            <directory>src/main/resources/${package.environment}</directory>    
        </resource>  
</resources>
    <finalName>testProfile</finalName>
  </build>
</project>

直接执行install得到的classes文件目录如下

Paste_Image.png

实际中development, production,test中的配置文件名字都一样,我这里只是为了看的更加明显而已。
有一点要说明的是我在弄的时候一直以为目录会是这样,比如我现在默认指定的是生产的,我以为打包后的目录就是/production/sys_conf_pro.properties,实际上resource中的配置了excludes节点已经排除了,所以不会再有这一个目录。所以如果你的配置文件src/main/resources下的目录时conf/production/sys_conf_pro.properties想做到conf/sys_conf_pro.properties也就是只想排除production目录是做不到的。
命令行打包命令:mvn install -Dmaven.test.skip=true -Ptest
-P:是用来指定参数。
-D是用来跳过单元测试。

2.2 将配置属性配置在profile 里的properties中:
配置如下,我只配置了test的数据,同时需要配置build节点中的resources。对于项目中的properties中的使用${key}就行。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>testProfile</groupId>
  <artifactId>testProfile</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>testProfile</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<profiles>
    <profile>  
        <id>test</id>  
        <properties>  
            <package.environment>test</package.environment>  
            <profile.http.url>http://127.0.0.1/test</profile.http.url>
            <profile.sms.url>http://127.0.0.1/sms</profile.sms.url>
        </properties>  
    </profile>  
    <profile>  
        <id>production</id>  
        <properties>  
            <package.environment>production</package.environment>  
        </properties>  
         <activation>  
                <activeByDefault>true</activeByDefault>  
          </activation>
    </profile>  
    <profile>  
        <id>development</id>  
        <properties>  
            <package.environment>development</package.environment>  
        </properties>  
    </profile>  
</profiles>
<build>
    <finalName>testProfile</finalName>
     <resources>  
            <resource>  
                <directory>src/main/resources</directory>  
                <filtering>true</filtering>  
            </resource>  
        </resources>  
</build>
</project>
Paste_Image.png

使用工具编译:


Paste_Image.png

编译后的结果:


Paste_Image.png

其实resource中还有很多属性,可以根据自己的需要进行配置。

三:制作bat文件

按照下图的方式制作bat运行


bat_one_Image.png
bat_two_Image.png
bat_three_Image.png
bat_four_Image.png

得到上面的Commond Line然后在本地文件夹建立一个*.bat,把这段复制进去即可。

java -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.7.0_79\bin\javaw.exe" -
Dmaven.home=EMBEDDED -
Dclassworlds.conf=D:\wuhaoWorkSpace\MyeclipseSpace\.metadata\.plugins\org.eclipse.m2e.launching\lau
nches\m2conf686032403387202491.tmp -
Dmaven.bootclasspath=/E:/studySoft/MyEclipse/plugins/org.eclipse.m2e.maven.runtime_1.4.0.20130531-
2315/jars/plexus-classworlds-2.4.jar -Dfile.encoding=GBK -classpath 
/E:/studySoft/MyEclipse/plugins/org.eclipse.m2e.maven.runtime_1.4.0.20130531-2315/jars/plexus-
classworlds-2.4.jar org.codehaus.plexus.classworlds.launcher.Launcher -B clean
pause

最后一个pause是我自己加的,我将上面的javaw.exe改为java.exe还是闪退,所以加了一个pause后按键后才推出
而install的bat制作只是将clean的-B clean改为-B install -Ptest即可

Paste_Image.png

在执行打包的时候需要先clean,所以我的install的bat如下

@call mvn-clean.bat
java -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.7.0_79\bin\java.exe" -
Dmaven.home=EMBEDDED -
Dclassworlds.conf=D:\wuhaoWorkSpace\MyeclipseSpace\.metadata\.plugins\org.eclipse.m2e.launching\lau
nches\m2conf4230151797058056596.tmp -
Dmaven.bootclasspath=/E:/studySoft/MyEclipse/plugins/org.eclipse.m2e.maven.runtime_1.4.0.20130531-
2315/jars/plexus-classworlds-2.4.jar -Dfile.encoding=GBK -classpath 
/E:/studySoft/MyEclipse/plugins/org.eclipse.m2e.maven.runtime_1.4.0.20130531-2315/jars/plexus-
classworlds-2.4.jar org.codehaus.plexus.classworlds.launcher.Launcher -B install -Ptest
pause

四、maven编译跳过junit

配置后,maven打包的时候跳过junit

<plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-surefire-plugin</artifactId>  
        <version>2.5</version>  
        <configuration>  
          <skipTests>true</skipTests>  
        </configuration>  
      </plugin>  

编译并且加载lib下的jar包

<plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <compilerArguments>
            <extdirs>src\main\webapp\WEB-INF\lib</extdirs>
          </compilerArguments>
        </configuration>
      </plugin>
</plugins>

五:浩语

                                           __                                                        
                            __  _  ____ __|  |__ _____    ___
                            \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                             \     /|  |  /   Y  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                  任何事情都是要靠努力和用心。                                                   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,494评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,678评论 6 342
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,009评论 9 467
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,049评论 25 707
  • 如果活在27岁就死了,那么距离死还有三个月16天。 三年前,还能回到三年前吗。 未来怎么办,好孤独。已经孤独大半辈...
    希惟阅读 113评论 0 0