最近做一個接口,需要用到本地的一個jar,直接用如下的配置在本地main測試不會有問題;
但是當另一個moudle需要引入使用了這個jar的moudle的時候(moudle A需要在pom中引入mudule B,moudle B使用了本地jar),如下的配置就會有問題:
斷點發現這個jar中的被使用到的class not found。
<properties> <lib.dir>G:\central platform\lib</lib.dir> </properties> <dependencies> <dependency>
<groupId>com.asiainfo</groupId>
<artifactId>OpenApiClient</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${lib.dir}/OpenApiClient.jar</systemPath>
</dependency>
</dependencies>
現把解決辦法記錄下來:
1.用maven把本地jar構建到本地maven倉庫中(遠程的沒試過哦)
2.在pom中引入該jar的maven座標,即可解決。
步驟1的具體實施:
第一步:將test.jar包存放在一個文件夾中,比如G:\zhdata\lib文件夾
第二步:建一個test.jar包相關的pom.xml文件,需要在pom.xml中定義其maven座標(及其相應的依賴代碼,此處可以沒有)即可;
同樣將pom文件存放在G:\zhdata\lib;
test.jar座標及依賴代碼如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.weka.ts</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<name>test class</name>
<description>A Test Class for test maven</description>
</project>
進一步說明:
4.0.0的說明:The "model" refers to the structure of pom.xml
itself, i.e. which elements are allowed/mandatory, how to interpret them, etc.
groupId是隨意的,只要不與已存倉庫中的其他jar包的座標衝突就行了
artifactId也可以隨意
version也是可以隨意的
第三步:mvn install:install-file -Dfile=test.jar -DgroupId=org.weka.ts -DartifactId=test -Dversion=1.0 -Dpackaging=jar
說明:
在windows 運行下輸入cmd,然後輸入 g: 進入g盤目錄,然後輸入 cd zhdata\lib 進入 test.jar所在的目錄;
輸入上述命令,成功後可在本地倉庫查看即可發現已經配置在maven中。
參考資料:全程參考 http://blog.csdn.net/xyls12345/article/details/24977561
modelVersion的意義參考 http://stackoverflow.com/questions/22218497/maven-modelmodelversion-version-control
感謝上述網友的分享!
------------------------------
------------------------------
http://www.cnblogs.com/candle806/p/3949655.html
在使用maven進行jar包管理時,通過我們都是通過maven去下載一些jar包,但有些jar在maven上沒有,所以就就可能在本地直接手動加入一些需要用到的外部jar包。但如果我們用maven package打包就會發現,本地的那些jar是不能被maven識別的,所以就需要解決Maven關於本地jar包的打包處理的問題。
還好maven中有提供這樣的配置,在pom文件中通過配置附加指定本地jar的路徑即可完成maven打包功能。
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>project-demo\lib</extdirs> </compilerArguments> </configuration> </plugin> </plugins> </build>
然後通過
mvn clean:clean
mvn -Dmaven.test.skip=true package
完成打包即可!