Maven 中使用本地 jar 包

如果引用了在 Maven 遠程倉庫中沒有的 jar 包,比如自己組使用的類包,或者是一些歷史遺留的包,在使用 Maven 構建過程中就容易遇到找不到類之類的問題。比如我遇到過的問題就有:

  • 編譯時找不到 xxx 類
  • 進行測試時找不到 xxx 類

針對這兩個問題的一些解決方法

編譯
只針對編譯的時候可以通過配置插件來設置擴展(即本地 jar)的位置,假設我們的 jar 包放在 lib 文件夾裏,配置例子如下

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <compilerArgs>
            <arg>-extdirs</arg>
            <arg>${basedir}/lib</arg>
        </compilerArgs>
    </configuration>
</plugin>

這裏配置 <compilerArgs> ,添加編譯參數 -extdirs ${basedir}/lib

測試
我暫時沒有發現通過配置 surefire 插件來解決測試時引入本地 jar 的方法,所以用別的方式,下面兩種方式都能解決編譯跟測試的問題

  • pom.xml 中添加本地依賴
<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sun.jdk</groupId>
      <artifactId>tools</artifactId>
      <version>1.5.0</version>
      <scope>system</scope>
      <systemPath>${java.home}/../lib/tools.jar</systemPath>
    </dependency>
  </dependencies>
  ...
</project>

依賴配置中 scope 爲 system,systemPath 指定 jar 包路徑。不過這種引入依賴的方式已被標記爲過時的。

  • 安裝本地 jar 包到本地倉庫
    執行
mvn install:install-file -Dfile=lib/localjar-1.0.0.jar -DgroupId=org.group -DartifactId=localjar -Dversion=1.0.0 -Dpackaging=jar

就可以安裝 localjar-1.0.0.jar 到本地倉庫了,然後在 pom.xml 中添加依賴就行,配置和普通的依賴配置是一樣的。這裏的 groupId、artifactId、version 等都可以隨便指定的,只是影響本地倉庫生成目錄結構而已,pom.xml 增加依賴時保持一致就行。

發佈了50 篇原創文章 · 獲贊 26 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章