appassembler-maven-plugin插件打包的時候如何把本地依賴的jar包打進去

有時候maven倉庫沒有的jar包,我們需要從本地址指定文件路徑並且指定scope爲system來引入依賴。默認的,assemble插件是不會把本地依賴的jar包打包進去的。

     <dependency>
       <groupId>*</groupId>
         <artifactId>*</artifactId>
         <version>*</version>
         <scope>system</scope>
         <systemPath>${basedir}\lib</systemPath>
     </dependency>

assemble插件的配置中,可以指定打包結果輸出的根目錄和jar包存放目錄。

<!-- 根目錄 -->
<assembleDirectory>myDemo</assembleDirectory>
<!-- 打包的jar,以及maven依賴的jar放到這個目錄裏面 -->
<repositoryName>lib</repositoryName>

可以通過在pom文件中的build節點中單獨指定本地依賴jar包的存放路徑作爲資源,輸出目錄targetPath指定到我們打包後存放jar包的地址,這樣本地依賴的jar包就可以變相打進去了。這裏的地址是相對於本地依賴jar包裏面作爲目錄起點的相對位置。

 <resources>
   <resource>
        <directory>${project.basedir}/lib</directory>
        <targetPath>../../myDemo/lib</targetPath>
        <includes>
            <include>**/*.jar</include>
        </includes>
    </resource>
</resources>

可能還有個問題,如果打包後生成啓動腳本,腳本里面有指定JVM啓動參數,裏面的CLASSPATH默認是指向所有依賴的jar包的,但不包括本地依賴的jar包,雖然我們打進去了,但是依賴不到,依然無法啓動。

CLASSPATH="$BASEDIR"/conf:"$REPO"/spring-boot-starter-2.1.5.RELEASE.jar:$REPO"/hamcrest-core-1.3.jar:.....(省略很多,就是所有jar包一個個列出來)

通過設置classpath通配符,可以讓上面的配置清爽很多,同時所有打包後的jar目錄的包都可以設置到classpath了。另外jvm啓動參數也簡短了很多,在linux服務器上查看進程也清晰了。

<useWildcardClassPath>true</useWildcardClassPath>

設置以後的classpath如下:

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