springboot maven 打包的兩種方式

一、springboot maven打ja包

1、配置文件不外放

a、maven配置打包插件

 <!--打包配置,執行mvn clean package-->
    <packaging>jar</packaging>
    <!--maven打war包依賴配置-->
    <!--<packaging>war</packaging>-->
    <!--maven-plugin的依賴配置-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

b、maven打jar包

2、配置文件外放

Springboot讀取核心配置文件(application.properties)的優先級爲

Jar包同級目錄的config目錄

Jar包同級目錄

classPath(即resources目錄)的config目錄

classpath目錄(代碼中的yml)

上面是springboot默認去拿自己的核心配置文件的優先級,還有一種最高優先級的方式是項目啓動時通過命令的方式指定項目加載核心配置文件,命令如下

java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar
如果Spring Boot在優先級更高的位置找到了配置,那麼它會無視優先級更低的配置

1.2 其他資源配置文件

上面描述的Springboot核心文件已經能夠提取出jar包外進行管理了,但是還有其他一些業務上的配置文件,如數據源配置文件,公共資源定義配置文件(常量,FTP信息等),quartz定時器,日誌等配置文件我們如何去提取出來並確保能在代碼中引用到呢

我們知道Springboot項目可以通過註解方式來獲取相關配置文件,所以我們也是通過註解方式讓項目能夠引用到jar包外部的配置文件的,如下圖:

@PropertySource裏面的value有兩個值,第一個是classpath下config目錄下的數據源配置文件,第二個則是根據spring.profiles.path動態獲取的目錄,spring.profiles.path是我們在覈心文件自定義的一個配置項,它的值是我們配置文件統一管理的文件夾路徑,後面的ignoreResourceNotFound=true則是設定假如根據前面一個路徑沒有找到相關配置文件,則根據第二個路徑去找。

我們還可以直接根據路徑,用FileSystemResource類去加載一個配置文件實例出來,如下圖

原理類似,根據在覈心文件自定義的統一配置目錄的路徑來加載配置文件

另外logback日誌配置文件加載方式如下:

綜上所述,我們梳理一下實現方案的思路

1、        在springboot核心文件裏定義一個spring.profiles.path配置項,它的值指向我們所有配置文件統一放置的目錄,包含核心文件自身也是放置在裏面的

2、        代碼或者配置文件里加載配置文件的地方也應該獲取spring.profiles.path配置項來動態加載該路徑下的配置文件

3、        Pom.xml文件修改打包相關模塊,將配置文件排除,這樣我們打出的jar包是不含配置文件的,打包配置請參考文檔節點3

4、        啓動jar包時,通過命令指定加載的核心文件爲spring.profiles.path下的核心文件

二、springboot maven打war包

a、啓動類修改部分爲紅色

b、maven添加插件

<packaging>war</packaging>
<!--maven打war包依賴配置-->
<build>
    <finalName>uqiansoft</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

c、刪除springboot自帶tomcat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章