1.記一次maven引入本地依賴

1.背景

客戶環(huán)境并沒有某些三方依賴,無法實(shí)現(xiàn)docker化部署

1.1 方案一

將那幾個(gè)依賴的本地倉(cāng)庫(kù)曲饱,復(fù)制到docker打包的機(jī)器,讓package時(shí)從本地倉(cāng)庫(kù)引入
可行,之前臨時(shí)解決方案婆誓,缺點(diǎn)就是,客戶調(diào)整服務(wù)器镶柱,需要再次將本地倉(cāng)庫(kù)復(fù)制到對(duì)應(yīng)服務(wù)器上

1.2 本地引入

// java可以通過<systemPath>${basedir}/lib/combined-lib.jar</systemPath>

        <dependency>
            <groupId>tech.ty</groupId>
            <artifactId>pdi</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/combined-lib.jar</systemPath>
        </dependency>

將包放置項(xiàng)目的lib目錄下,但是打包并沒有將對(duì)應(yīng)的lib/*.jar 打包到 BOOT-INF/lib 下面旷档,需要增加plugin

  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>copy-local-jar-to-target</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/classes/BOOT-INF/lib/</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/lib</directory>
                                    <includes>
                                        <include>*.jar</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

2.整合成一個(gè)依賴

由于我引入的第三方包是一個(gè)pom,內(nèi)部間接引入了其他依賴

        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-core</artifactId>
            <version>${kettle.version}</version>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-engine</artifactId>
            <version>${kettle.version}</version>
        </dependency>

2.1 shade

通過shade可以將所有l(wèi)ib打包成一個(gè)jar

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>

        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-core</artifactId>
            <version>${kettle.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                </exclusion>
                <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-engine</artifactId>
            <version>${kettle.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                </exclusion>
                <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <shadedArtifactAttached>false</shadedArtifactAttached>
                            <shadedArtifactClassifier>shaded</shadedArtifactClassifier>
                            <outputFile>${project.build.directory}/combined-lib.jar</outputFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我之所以要排除exclusion歇拆,通過maven依賴存在遠(yuǎn)近先后順序問題鞋屈,
還有版本沖突,不同包會(huì)出現(xiàn)目錄項(xiàng)目 類名項(xiàng)目故觅,這個(gè)就需要自己控制依賴順序問題
否則報(bào)錯(cuò)classnotfound
還有就是我們目前這兩個(gè)依賴打包的成jar過大厂庇,100多M,當(dāng)前的springboot版本啟動(dòng)會(huì)報(bào)錯(cuò),及需要分析內(nèi)部包输吏,先排除权旷,然后再?gòu)谋卷?xiàng)目自己引入,
自此贯溅,項(xiàng)目運(yùn)行正常拄氯,中間會(huì)遇到很多問題,需要自己細(xì)心依依排查它浅,程序員不易~

3.gradle擴(kuò)展

gradle項(xiàng)目更簡(jiǎn)單译柏,可以通過批量導(dǎo)入,maven找了很多博客并未發(fā)現(xiàn)姐霍,本項(xiàng)目那兩個(gè)內(nèi)部依賴100+,顯然一個(gè)個(gè)引入不現(xiàn)實(shí)鄙麦,建議其他的小伙伴,慢慢從maven轉(zhuǎn)成gradle镊折,gradle功能更強(qiáng)大

implementation fileTree('dir': 'lib', include: ['*.jar'])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胯府,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恨胚,更是在濱河造成了極大的恐慌骂因,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃泡,死亡現(xiàn)場(chǎng)離奇詭異侣签,居然都是意外死亡塘装,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門影所,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹦肴,“玉大人,你說我怎么就攤上這事猴娩∫趸希” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵卷中,是天一觀的道長(zhǎng)矛双。 經(jīng)常有香客問我,道長(zhǎng)蟆豫,這世上最難降的妖魔是什么议忽? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮十减,結(jié)果婚禮上栈幸,老公的妹妹穿的比我還像新娘。我一直安慰自己帮辟,他們只是感情好速址,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著由驹,像睡著了一般芍锚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔓榄,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天并炮,我揣著相機(jī)與錄音,去河邊找鬼甥郑。 笑死渣触,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壹若。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皂冰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼店展!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秃流,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤赂蕴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舶胀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體概说,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碧注,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糖赔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萍丐。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖放典,靈堂內(nèi)的尸體忽然破棺而出逝变,到底是詐尸還是另有隱情,我是刑警寧澤奋构,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布壳影,位于F島的核電站,受9級(jí)特大地震影響弥臼,放射性物質(zhì)發(fā)生泄漏宴咧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一径缅、第九天 我趴在偏房一處隱蔽的房頂上張望掺栅。 院中可真熱鬧,春花似錦芥驳、人聲如沸柿冲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)假抄。三九已至,卻和暖如春丽猬,著一層夾襖步出監(jiān)牢的瞬間宿饱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工脚祟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谬以,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓由桌,卻偏偏與公主長(zhǎng)得像为黎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子行您,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354