Maven配置项目依赖使用本地仓库的方法汇总
Maven配置项目使用本地仓库有以下方式实现:
1、类似本地仓库,但是属于本地依赖,比如某个JAR包是引用第三方的,直接放在了项目的lib文件夹,那么此时可以如下配置项目的POM:
<dependency> <groupId>ldapjdk</groupId> <artifactId>ldapjdk</artifactId> <scope>system</scope> <version>1.0</version> <systemPath>${basedir}srclibldapjdk.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>srcmainwebappWEB-INFlib</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文件的任意节点的内容