Maven根據不同個環境打包, 獲取不同的配置文件等等

jopen 9年前發布 | 20K 次閱讀 Maven 項目構建

這段時間接觸Maven, 發現還是個不錯的東西, 我在OpenShift申請了一個賬號, 準備自己做一個自己的網站, 它默認是Maven管理的, 也可以自己用其他的. 但是我要打war, 然后發布. 我本地的測試配置文件 與 線上的配置不一樣, SB的做法就是每次復制粘貼, 這太.... 所以, 我必須要在本地的IDEA里面一樣, 需要誰作為我的資源文件就要作為的我資源文件, 那就方便了, 找了很多的BLGO, 說的很好, 就是琳琳碎碎的. 還不如給我一個pom.xml了. 以至于我一直沒有跑起來, 或者他們的碎片就是不完整的, 自己折騰了半天, 并且自己測試, 上線, 都OK. ...

<project xmlns="<profiles>
        <profile>
            <id>local</id>
            <properties>
                <package.environment>local</package.environment>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>product</id>
            <properties>
                <package.environment>product</package.environment>
            </properties>
        </profile>
    </profiles>

    這里就是不同的resources文件夾, 我這里只區分本地 產品; 設置為true的就是默認被激活的. 所以后面打包默認就是本地;

<resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>local/*</exclude>
                    <exclude>product/*</exclude>
                    <exclude>public/*</exclude>
                </excludes>
            </resource>
        </resources>

    這里就是我的資源文件, public里面存放我的公用的, 比如Spring的配置文件, 就是本地與產品都一樣的;local 與 product一看就知道了; 

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                    <warName>book</warName>
                    <webResources>
                        <resource>
                            <directory>src/main/resources/${package.environment}</directory>
                            <targetPath>WEB-INF/classes</targetPath>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/resources/public</directory>
                            <targetPath>WEB-INF/classes</targetPath>
                            <filtering>true</filtering>
                        </resource>
                        <!--<resource>-->
                            <!--<directory>${project.build.directory}/classes</directory>-->
                            <!--<includes>-->
                                <!--<include>**/*.properties</include>-->
                                <!--<include>**/*.xml</include>-->
                            <!--</includes>-->
                        <!--</resource>-->
                    </webResources>
                </configuration>
            </plugin>


這里就是war的插件了, 

${package.environment}

就是動態指定文件夾了.

<filtering>true</filtering>

這里一定需要設置為true才行.


然后就差不多了. 最后執行 mvn clean ; mvn compile; mvn package; 這里是Maven的生命周期, 其他介紹的文章太多了, 我就不再具體講. 如果說我要打product的war包; 

mvn clean ; mvn compile; mvn -Pproduct package; 

那就激活了product 的資源文件;

就這樣子, 很簡單吧~

來自:
http://my.oschina.net/vernon/blog/271970

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!