Maven配置項目依賴使用本地倉庫的方法匯總
Maven配置項目使用本地倉庫有以下方式實現:
1、類似本地倉庫,但是屬於本地依賴,比如某個JAR包是引用第三方的,直接放在了項目的lib文件夾,那么此時可以如下配置項目的POM:
<dependency>
<groupId>ldapjdk</groupId>
<artifactId>ldapjdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
</dependency>
說明:紅色部分為項目的JAR包所在位置。
!更好的方式是配置編譯參數<compilerArguments>,添加extdirs將jar包相對路徑添加到配置中,如下:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src\main\webapp\WEB-INF\lib</extdirs> <extdirs>${basedir}/WebRoot/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
說明:紅色部分為項目的JAR包所在位置。
2、配置Maven的setting.xml文件的本地倉庫地址,但是這個方式的意思不是用在項目上的本地倉庫,而是比如遠程倉庫緩存的本地目錄;如果要實現項目上使用的本地倉庫,可以使用這個思路解決,比如先配置好本地倉庫目錄,然后安裝需要的JAR包到本地倉庫,最后就是在項目上直接引用這個JAR包即可。
配置setttin.xml的本地倉庫目錄方式如下:
<localRepository>C:/MyLocalRepository</localRepository>
安裝JAR包的思路參考:http://www.cnblogs.com/EasonJim/p/6794423.html
3、使用Maven的deploy(http://maven.apache.org/plugins/maven-deploy-plugin/)插件中的命令mvn deploy部署到本地文件夾,得到JAR包的相關文件,POM配置如下:
<distributionManagement>
<repository>
<id>oss</id>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>oss</id>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:
①上面的配置是遠程倉庫的deploy,其中包括了兩個地址release和snapshot。
②配置deploy到本地倉庫只需要配置<repository>節點即可,<snapshotRepository>節點去除。
③本地倉庫的url參考:file:/user/jim/home/test/或者file:D:/test/
使用命令:mvn deploy
發布好之后整個文件夾test里面的內容可以提交到一個遠程目錄或者直接使用這個本地目錄,在POM項目上配置遠程倉庫的地址,不過這個url節點可以使用本地路徑,配置如下:
<repositories>
<repository>
<id>jsoftlocal-mvn-repo</id>
<url>file:D:/test/</url>
</repository>
</repositories>
提示:這個url節點可以是遠程地址,本地局域網地址,也可以是本地目錄地址。
配置好之后,直接在POM上配置自己發布的依賴即可。比如我發布測試的JAR包引入如下:
<dependency>
<groupId>com.jsoft</groupId>
<artifactId>testcommon</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Maven內置變量說明:
- ${basedir} 項目根目錄
- ${project.build.directory} 構建目錄,缺省為target
- ${project.build.outputDirectory} 構建過程輸出目錄,缺省為target/classes
- ${project.build.finalName} 產出物名稱,缺省為${project.artifactId}-${project.version}
- ${project.packaging} 打包類型,缺省為jar
- ${project.xxx} 當前pom文件的任意節點的內容

