maven引用本地jar包
教程:
http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html
安装
到下载maven: http://maven.apache.org/download.cgi
$wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz
解压,拷贝到某个目录下,建立软链接:
$tar -xzvf apache-maven-3.2.5-bin.tar.gz
$sudo cp apache-maven-3.2.5 /usr/local/ -rf
$cd /usr/bin
$sudo ln -s /usr/local/apache-maven-3.2.5/bin/mvn mvn
添加环境变量
$sudo vim /etc/profile
加入:
export JAVA_HOME=/usr/local/java/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export MAVEN_HOME=/usr/local/apache-maven-3.2.5
export PATH=${PATH}:${MAVEN_HOME}/bin
执行命令,让/etc/profile马上生效
$source /etc/profile
测试是否安装成功:
$mvn -v
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /usr/local/apache-maven-3.2.5
Java version: 1.6.0_32, vendor: Sun Microsystems Inc.
Java home: /usr/lib/install/jdk-1.6.0_32/jre
Default locale: en_US, platform encoding: UTF-8 $java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
OpenJDK (XXX) 64-Bit Server VM (build 20.0-b12-internal, mixed mode)
使用maven
构建maven项目
$mvn archetype:generate Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 554:回车
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:回车(默认为6) Define value for property 'groupId': : test_groupid
Define value for property 'artifactId': : test_artifactid
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': test_groupid: :
Confirm properties configuration:
groupId: test_groupid
artifactId: test_artifactid
version: 1.0-SNAPSHOT
package: test_groupid
Y: : y
此时已经构建成功
$cd test_artifactid
$ls
pom.xml src
在src/main/java/目录下放java项目,在src/test/java/目录下放单元测试
几个常用命令:
* mvn -h,不会用时,可寻求帮助
* mvn clean compile,将.java类编译为.class文件
* mvn clean test, 执行单元测试,会先运行编译
* mvn clean package,进行打包,会先运行测试
* mvn clean install –Dmaven.test.skip
* mvn clean install,将某jar包安装到maven本地仓库中
* mvn archetype:generate,快速的搭建项目骨架,输入一些groupId/artifactId/version等信息,由mvn插件自动生成一些必要的依赖和项目骨架
本地不常用jar包如何添加依赖关系:
首先我们需要理解Maven仓库的两个概念:本地仓库和远程仓库
本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。比如我们把部分需要依赖的jar包放到项目的lib文件夹下,我们需要把依赖关系添加到pom.xml文件中。然而大部分jar包都是非正式的jar包,很难或不可能从远程仓库中下载下来。
网上有几种比较常用的做法:
直接安装到本地仓库中,然而,这种做法只会在你本地的机器上有效,其它机器仍需重复执行安装命令。
通过添加system scope标签的方式,这种做法有时候会产生些问题,比如项目开发过程中会出现项目虽然打包成功,但是运行过程中会报包依赖错误。
搭建本地的远程仓库。首先把依赖的jar包通过以下命令:groupId这类可以随意填,但是需要确保在远程仓库中不存在,并且最好做到唯一,否则会与其它依赖关系冲突。
$mvn install:install-file -Dfile=lib/gson-2.2.4.jar -DgroupId=localgroupid -DartifactId=gson -Dversion=2.2.4 -Dpackaging=jar -DlocalRepositoryPath=repo -DcreateChecksum=true
执行命令后,我们查看repo文件夹的树结构,这时的repo文件夹实际上相当于远程仓库:
$tree -l
.
`-- localgroupid
`-- gson
|-- 2.2.4
| |-- gson-2.2.4.jar
| |-- gson-2.2.4.jar.md5
| |-- gson-2.2.4.jar.sha1
| |-- gson-2.2.4.pom
| |-- gson-2.2.4.pom.md5
| `-- gson-2.2.4.pom.sha1
|-- maven-metadata-local.xml
|-- maven-metadata-local.xml.md5
`-- maven-metadata-local.xml.sha1
此时,我们在pom.xml中需要添加的依赖关系如下:
<dependency>
<groupId>localgroupid</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
此外,还需要在pom.xml中添加:
<repositories>
<repository>
<id>project</id>
<url>file://${project.basedir}/repo</url>
</repository>
</repositories>
当我们把所有需要依赖的jar包等依赖关系注入到pom.xml后,我们可以编译、测试、打包项目。
下载依赖关系的过程如下: 根据pom.xml中的依赖关系,首先去远程仓库查看是否有该依赖包,如果有直接下载。否则会从repo中查看是否有该依赖关系,如果有直接添加到本地仓库中,否则报错。 因此当我们把repo添加到项目中,在其它机器上就可以不用重复手动或跑命令的方式安装到本地仓库。
在新建项目时怎么做?
- 使用mvn构建命令构建maven固定格式的maven项目
- 依赖本地jar包时,本地的jar包在添加时需要同时执行安装到repo文件夹下,通过设置groupId、artifactId、version、package来区别开不同的jar包以及版本号。
- 把依赖关系添加到pom.xml中
- 源代码、单元测试代码按照规范放到各自的文件夹下
maven引用本地jar包的更多相关文章
- maven 把本地jar包打进本地仓库
maven 把本地jar包打进本地仓库 1.本地有自己写的项目jar包,但是需要用maven依赖对其进行引用: 2.某个jar包在远程仓库没有,导致pom.xml报错,此时可以从网上单独下载此jar包 ...
- 解决Maven关于本地jar包的打包处理
在使用maven进行jar包管理时,通过我们都是通过maven去下载一些jar包,但有些jar在maven上没有,所以就就可能在本地直接手动加入一些需要用到的外部jar包.但如果我们用maven pa ...
- maven - 引用本地jar,进行jar包移动
背景: 项目为maven工程,部分jar需要需用项目单独修改的本地jar包. 配置好scope后发现构建后引用的jar没有移动到对应的目录,百度后发现需要配置以下依赖 <plugin> & ...
- maven添加本地jar包
今天遇到一个mavan仓库中没有的jar包, 故只能添加本地jar包, 花了不少时间找资料,终于OK.故在此记录. 1. 第一次,在网上看到说可以用<systemPath> 解决, 如下: ...
- maven使用本地jar包
引入本地jar包 方式一:将本地Jar包安装到本地仓库,再按常规方式引用 mvn install:install-file -Dfile=libs\tools.jar -DgroupId=com.su ...
- Maven使用本地jar包(两种方式)
有些项目会用到一些Maven库上没有的jar包,这就需要我们自己引入了 这种情况有两种办法: 第一种方式,在pom文件中引用时使用本地路径: 首先把jar包放到项目中: 然后在pom文件中引入: &l ...
- idea引用本地jar包的方法及报错解决
1 首先将本地jar包打入mvn本地仓库 cmd mvn install:install-file -Dfile=E://xx.jar 本地jar包绝对路径 -DgroupId=com.ccp -Da ...
- maven管理本地jar包注意事项
今天lucene中集成第三方中文分词器IKAnalyzer的时候遇到了相似的问题:lucene版本4.9.IKAnalyzer版本2012FF_hf1 直接去maven仓库下载,pom配置如下: &l ...
- maven添加本地jar包到本地仓库
1 进入jar包所在文件夹,进入cmd命令 2 执行命令 mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -Dartif ...
随机推荐
- EditText禁止输空格
1.EditText禁止输空格 editText.setFilters(new InputFilter[]{filter}); private InputFilter filter=new Input ...
- word文档老是出现这个提示-----“发现二义性的名称:TmpDDE”错误
你好 我解决这个问题了,我把appdata目录下的normal.dotm删除了就没问题了 将系统中路径C:\Users\Administrator\AppData\Roaming\Microsoft\ ...
- 【已解决】vbox + ubuntu 设置 1366x768 分辨率
1. 打开VBOX(Oracle VM VirtualBox),启动Ubuntu 2. 点击"设备>安装增强功能" 3. 进入Ubuntu打开文件管理器,如下图 4. 输入r ...
- The Tao Of Programming翻译
The Tao Of Programming里面有许多道家思想,我也喜欢道家学说, 萌生了用文言文翻译的想法,不足之处还请方家指正. 翻译后的文档放在gitcafe上了,欢迎大家fork修正.
- Java反射机制在代理模式中的使用
代理模式的核心思路就是一个接口有两个子类,一个子类完成核心的业务操作,另一个子类完成与核心业务有关的辅助性操作. 代理模式分为静态代理模式和动态代理模式. 静态代理模式: //接口类 interfa ...
- 网页抓取信息(php正則表達式、php操作excel)
1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...
- ubuntu 14.04/16.04/18.04 yum安装 zabbix-agent 教程
备忘 环境:Ubuntu 14.04 基于官网配置官网链接 ①导入源: ### Ubuntu 18.04 # wget https://repo.zabbix.com/zabbix/3.4/ubunt ...
- Android studio 添加admob googgle play services
Android studio 添加admob googgle play services MainActivity import com.google.android.gms.ads.AdReques ...
- Android 扩展OkHttp支持请求优先级调度
在当今这个App泛滥的时代,网络请求差点儿是每个App不可缺少的一部分.请求差点儿遍布App的每个界面中.我们进入A界面后.App发起了一系列请求,这时候假如另一部分请求没有被运行,我们就进入B界面開 ...
- Windows远程访问OEM乱码解决
问题描述 发现用Windows访问Linux安装的Oracle时oem按钮总是乱码,整理解决方法如下: OEM简介及按钮乱码问题 http://www.linuxidc.com/Linux/2013 ...