通過maven 打包 包含指定的profiles


需求:資源文件根據不同的環境進行拆分,打包的時候只想根據目標環境將需要的資源文件包含進去。具體的資源環境如下圖所示。

 

 

 

 

 

 

 

 

 

 

 

解決方案:

  1. pom.xml文件配置

首先是在待打包的資源文件中排除掉application-*.yml,

<resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>application-*.yml</exclude>
                <!--<exclude>dev/*</exclude>--><!--打包的時候排除特定文件下的文件-->
            </excludes>
        </resource>

然后再另起一個resource配置節,指向相同的文件夾,再將需要的配置文件包含進去

<resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>application.yml</include>
                <include>application-${project}*.yml</include>
            </includes>
        </resource>

其中include節中*的意義表示通配符,如果想精確的打包某個yml文件,project變量保證全稱即可,但是如果想打包pro開頭的就設置project為pro就行了。

另外,默認情況下,要將所有的yml文件都build到target目錄下,此時需要配置一個profile節,如下:

<profile>
        <id>dev-default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <project> </project>
        </properties>
    </profile>

其中,project變量配置為空,這樣配合resource節中的application-${project}*.yml配置,就會把application-開頭的yml文件都build到指定的target文件夾下。

完整配置如下:

<build>
    <finalName>webTrainUse</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--fork : 如果沒有該項配置devtools不會起作用,即應用不會restart -->
                <fork>true</fork>
                <addResources>true</addResources><!--支持靜態文件熱部署 -->
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/webapp</directory>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>application-*.yml</exclude>
                <!--<exclude>dev/*</exclude>--><!--打包的時候排除特定文件下的文件-->
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>application.yml</include>
                <include>application-${project}*.yml</include> <!--注意這里有個通配符 -->
            </includes>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>

</build>
<!--定義打包環境變量,生產環境、測試環境、開發環境-->
<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <project>*</project><!--project為*,就可以將所有的yml文件都會build到指定的文件夾下-->
        </properties>
    </profile>
    
    <profile>
        <id>test</id>
        <properties>
            <project>test</project>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <properties>
            <project>pro</project>
        </properties>
    </profile>
   
</profiles>

2.mvn命令打包

mvn clean package -Ppro

其中-P后面的pro對應的是pom文件中profiles節中profile的id為pro的配置,其對應的project為produce,所以在下面的配置中的${project}就會被替換為

<resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>application.yml</include>
                <include>application-${project}.yml</include>
            </includes>
        </resource>

使用mvn的前提是配置好了MAVEN_HOME環境變量:

 

 

如果需要指定的maven配置文件,則mvn命令格式如下:

mvn clean –s D:\apache-maven-3.5.3\settings2.xml package –Ppro

打完包之后的文件目錄如下:

idea中設置參數進行打包

 

Maven Projects窗口中,右鍵要打包的項目中的pacekage,在右鍵菜單中可以看到create***的選項,如下圖:

 

 

點擊該選項之后,首先編寫一個Name名稱,如pro-outer,然后在彈出的菜單中編寫Command Line命令行參數,在輸入框中增加-Ppro-outer,pro-outer就是pom中profile節中的id值,如下圖:

 

 

然后點擊該窗口的applay按鈕,關閉該窗口,然后在idea的工具類中可以看到如下圖所示的內容

 

 

點擊運行按鈕,則執行打包操作

 

注意:

多模塊項目,注意profile的id名稱不要重復,否則在idea開發環境下會出異常,解決方式是在idea的maven-project窗口的最上方的profile文件夾,勾選要build到target文件夾的資源文件

 

 

 參考地址:

https://blog.csdn.net/a286352250/article/details/51734385/

https://www.cnblogs.com/lionsblog/p/10214751.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM