實(shí)現(xiàn)自定義SpringBoot框架日志組件の五: 工程實(shí)踐

系列

實(shí)現(xiàn)自定義SpringBoot框架日志組件の一:日志系統(tǒng)
實(shí)現(xiàn)自定義SpringBoot框架日志組件の二:配置文件
實(shí)現(xiàn)自定義SpringBoot框架日志組件の三: 自定義pattern
實(shí)現(xiàn)自定義SpringBoot框架日志組件の四: 自適應(yīng)

前言

這篇博客分享一下我自己的工程構(gòu)建的經(jīng)驗(yàn),當(dāng)然了千人千面,僅供參考

構(gòu)建

看一下我的 pom.xml

<!-- log4j2用到的高性能隊(duì)列  -->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.4</version>
        </dependency>


        <!--以下依賴的 scope 是 provided,表示編譯時(shí)不打包,運(yùn)行時(shí)由使用者提供-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!-- 排除默認(rèn)的日志組件 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
            <scope>provided</scope>
        </dependency>

        <!-- 引入springboot 的 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <scope>provided</scope>
        </dependency>

這里的依賴有兩種 scope
一種是默認(rèn)的,也就是compile,一種是 provided
貼個(gè)圖

image.png

其中compile會(huì)進(jìn)行依賴傳遞,也就是說(shuō)依賴了我這個(gè) jar包的項(xiàng)目,會(huì)自動(dòng)依賴 disruptor-3.4.4,會(huì)多引入一個(gè)包
provided不會(huì)進(jìn)行依賴傳遞,也就是說(shuō)用了我的包的項(xiàng)目,不引入spring-boot-starter-log4j2 的時(shí)候會(huì)有問(wèn)題,不生效或者報(bào)錯(cuò)

這么做的原因如下

  1. 引入 disruptor
    考慮到使用這個(gè)項(xiàng)目的可能之前是 logback 的,沒有見過(guò)這個(gè)包;為了方便直接默認(rèn)引入,就算版本沖突了,也只有這一個(gè)包沖突了,解決起來(lái)也方便
  2. 不引入 spring-boot-starter-log4j2
    考慮到這個(gè)包是spring體系的,會(huì)默認(rèn)引入一堆的依賴;使用方的spring和springboot的版本也是千奇百怪,強(qiáng)行引入的話,萬(wàn)一導(dǎo)致版本不兼容或者沖突,一堆包需要解決,很麻煩,所以只做provided, 我自己能編譯通過(guò)就行,具體版本使用方自行決定,與此同時(shí)使用文檔要寫清楚

spring-boot-starter-log4j2 的依賴如下(插件是idea的 maven helper

image.png

maven 中央倉(cāng)庫(kù)上傳

待完善

參考

Maven之scope詳解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容