1. 程式人生 > >使用maven profile 實現不同環境打包

使用maven profile 實現不同環境打包

maven 的build 配置可以在兩處出現:

<span style="font-size:14px;"><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/xsd/maven-4.0.0.xsd"> 
  <!-- 專案級別的構建,基礎配置 -->
  <build>...</build>
  
  <profiles>
    <profile>
      <!-- 特殊的構建 -->
      <build>...</build>
    </profile>
  </profiles>
</project></span>
工程執行環境有研發,測試和生產,不同的執行環境配置不同。 maven可根據不同的環境打包不同的配置檔案。
有兩種方式:
1)、打包時指定檔案目錄,使用指定的資料夾下的配置檔案。
2)、使用佔位符,點位符使用指定的profile 中的properties 的key對應值替換,這樣不同環境就可以載入不同的配置檔案。
下面分別說明這兩種情況。
1、指定打包過慮的檔案目錄
專案分為多個環境:研發(dev),測試(test),生產(product),演示(demo)。配置檔案目錄如下:


src/main/resources 中的配置檔案是在開發時使用的。
src/main/filters   資料夾是不同環境的配置檔案。
說明:不同環境的配置檔案只是各環境特定的配置,公共可用的配置都是在src/main/resources 資料夾中,如:common.properties

pom.xml 配置說明:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.masz.test</groupId>
    <artifactId>package-test</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
	
    <profiles>
        <profile>
            <id>qa</id>
            <properties>
                <package.environment>qa</package.environment>
            </properties>
            <!-- 配置預設啟用(打包時不指定 -P 引數使用此打包) -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <!-- 表示釋出時要打包的資原始檔,需要指明,這樣才會打到包中去 -->
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*</include>
                        </includes>
                        <excludes> <!-- 不包含的檔案(${package.environment})下面的檔案 -->
                            <exclude>${package.environment}/*</exclude>
                        </excludes>
                        <filtering>true</filtering>    <!-- 是否使用過濾器 -->
                    </resource>
                    <resource>
                        <directory>src/main/filters/${package.environment}</directory>
                        <includes>
                            <include>**.*</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
                <finalName>${project.artifactId}</finalName><!-- 打包後的檔名 -->
            </build>
        </profile>
    </profiles>
    <!-- 全域性build 配置 -->
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <outputDirectory>target/classes</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <includes>
                        <include>**/*Test*.java</include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
打包命令:
mvn clean package -Pqa -Dmaven.test.skip=true
-P 引數指定使用 profile 配置id 為qa 的build 引數打包。()

專案程式碼:http://download.csdn.net/detail/convict_eva/9638939

2、使用佔位符
專案如下:


applicationContext.xml 配置如下:

    <bean id="configurationProperties"
        class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath*:${env.props.file}</value><!-- 使用點位符 -->
                <value>classpath*:common.properties</value>
            </list>
        </property>
    </bean>
pom.xml 配置:
<!-- 指定profile 對應的屬性 -->
    <profiles>
        <profile>
            <id>demo</id>
            <properties>
                <env.props.file>filters/demo/application.properties</env.props.file>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <env.props.file>filters/dev/application.properties</env.props.file>
            </properties>
        </profile>
        <profile>
            <id>product</id>
            <properties>
                <env.props.file>filters/product/application.properties</env.props.file>
            </properties>
        </profile>
        <profile>
            <id>qa</id>
            <properties>
                <env.props.file>filters/qa/application.properties</env.props.file>
            </properties>
        </profile>
    </profiles>

    <!-- 全域性build 配置 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

打包命令:
mvn clean package -Pqa -Dmaven.test.skip=true
打包後解壓,佔位符已經被替換。
注:配置檔案可以單獨為一個工程,專案依賴這個工程即可。這樣也方便管理

專案程式碼:http://download.csdn.net/detail/convict_eva/9638941

相關推薦

使用maven profile 實現不同環境打包

maven 的build 配置可以在兩處出現: <span style="font-size:14px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww

【轉】maven profile實現環境打包

作為一名程式設計師,在開發的過程中,經常需要面對不同的執行環境(開發環境、測試環境、生產環境、內網環境、外網環境等等),在不同的環境中,相關的配置一般不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置。每次在不同環境部署程式時,都需要修改相應的配置檔案,使之完成環境的配置。這麼

maven profile實現環境打包

專案開發需要有多個環境,一般為開發,測試,預發,正式4個環境,通過maven可以實現按不同環境進行打包部署,命令為:  mvn package -P dev 其中“dev“為環境的變數id, 可以自己定義, 我定義的名稱為:dev,sit,uat,prod , 具體在

使用maven profile實現環境配置相關打包

本地 ces 軟件測試 測試 project oca rect fault uil 項目開發需要有多個環境,一般為開發,測試,預發,正式4個環境,通過maven可以實現按不同環境進行打包部署,命令為: mvn package -P dev 在eclipse中可以右擊選項r

mavenprofile構建不同環境打包

1.首先建立maven工程(略),專案結構如下 2.pom檔案配置   2.1 新增<profiles標籤>,在<profiles>分別定義各個<profile>用來配置開發,測試以及生產的全域性變數,程式碼如下: <p

一點一點學maven(13)--利用maven的filter和profile實現不同環境使用不同的配製

在我們平常的java開發中,會經常使用到很多配製檔案(xxx.properties,xxx.xml),而當我們在本地開發(dev),測試環境測試(test),線上生產使用(product)時,需要不停的去修改這些配製檔案,次數一多,相當麻煩。現在,利用maven

利用maven的resources、filter和profile實現不同環境使用不同配置檔案

在我們平常的java開發中,會經常使用到很多配製檔案(xxx.properties,xxx.xml),而當我們在本地開發(dev),測試環境測試(test),線上生產使用(product)時,需要不停的去修改這些配製檔案,次數一多,相當麻煩。現在,利用maven的filter和profile功能,我們可實現在

使用maven profile 構建不同環境引用不同的值

技術分享 resource filters htm rect file .com enc fig 需要做的配置如下 <profiles> <profile> <id>dev</id>

Spring Boot+Profile實現不同環境讀取不同配置

images alt quest color ive 作用 讀取 ron 總結 文件結構如下: 但是官方推薦放在config文件夾下。 作用: 不同環境的配置設置一個配置文件,例如:dev環境下的配置配置在application-dev.properties中。p

maven profile實現環境配置

每次專案部署上線都需要手動去修改配置檔案(比如資料庫配置)然後才能打包,很不方便,可以根據以下教程用maven的profile 實現多環境的配置。 以資料庫的配置為例,在src/main/resources 下新建三個資料夾,分別叫做dev,online,test,分別對應

maven項目之Profile---不同環境打包不同配置

程序員 不同的 fff payment 每次 pom.xml 目錄 麻煩 項目 作為一名程序員,在開發的過程中,經常需要面對不同的運行環境(開發環境、測試環境、生產環境、內網環境、外網環境等等),在不同的環境中,相關的配置一般不一樣,比如數據源配置、日誌文件配置、以及一些軟

Spring boot 使用profile完成不同環境maven打包功能

我們在日常開發工作中通常會根據不同的專案執行環境,新增不同的配置檔案,例如 開發環境,測試環境,生產環境等,每次手工的修改配置檔案太過於繁瑣。通過maven打包時確定需要使用的配置檔案可以很好的解決這個問題。 下面看一下程式碼目錄 application-dev.prop

maven根據不同環境打包不同文件

pretty version config XML 接口 ins efault com 配置文件 一, 我們平時在項目開發過程中會根據不同的環境打包不同的文件。如數據庫連接文件,三方接口文件,日誌文件等等,他們在開發,測試和線上環境的配置不一樣,部署測試環境或線上環境都要改

MAVEN利用Profile構建不同環境的部署包

con 都在 lte res 我們 ins ons plugins -i 通常,項目要在多個環境部署,每種環境都有各自的資源配置參數,比如:數據庫連接、Redis服務器地址等等。 所以,各個環境打包出來的資源是不一樣的,如果手動的修改,費時費力。我們可以利用MAVAN的pr

通過maven profile實現多套環境配置

maven profile的使用 作為一名程式設計師,在開發的過程中,經常需要面對不同的執行環境(開發環境、測試環境、生產環境、內網環境、外網環境等等),在不同的環境中,相關的配置一般不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置。每次在不同環境部署程式時,都需要修改相

Maven Profile 與 Spring Profile 管理多環境打包

一般開發團隊會有多個部署環境,如 dev 環境用於開發自測,QA 環境讓測試團隊測試, Production 環境作為線上環境。通常不同環境的配置不同,我們希望打包時的人力消耗最少。 #Spring Boot Profile Spring Boot Profile 有許多的功能,這裡只說管理配置的內容。Spr

Spring Boot專案使用maven-assembly-plugin根據不同環境打包成tar.gz或者zip

spring-boot-assembly 在spring boot專案中使用maven profiles和maven assembly外掛根據不同環境打包成tar.gz或者zip 將spring boot專案中的配置檔案提取到外部config目錄中 將spring boot專案中的

Spring Boot項目使用maven-assembly-plugin根據不同環境打包成tar.gz或者zip

6.0 content arc 項目啟動 index final ica str 4.0 spring-boot-assembly 在spring boot項目中使用maven profiles和maven assembly插件根據不同環境打包成tar.gz或者zip

SpringBoot專案使用maven-assembly-plugin根據不同環境打包成tar.gz

spring-boot-assembly 在spring boot專案中使用maven profiles和maven assembly外掛根據不同環境打包成tar.gz或者zip 將spring boot專案中的配置檔案提取到外部config目錄中 將spring boot專案中的

SpringBoot項目使用maven-assembly-plugin根據不同環境打包成tar.gz

外部 releases sem || second follow environ readme.md http spring-boot-assembly 在spring boot項目中使用maven profiles和maven assembly插件根據不同環境打包成t