Maven 将Jar安装到本地仓库和Jar上传到私服及依赖范围控制

1.将Jar安装到本地仓库
方式1:dependency 本地jar包

<dependency>  
<groupId>com.hope.cloud</groupId>  <!--自定义-->  
<artifactId>cloud</artifactId>    <!--自定义-->  
<version>1.0</version> <!--自定义-->  
<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->  
<systemPath>${basedir}/lib/cloud.jar</systemPath> <!--项目根目录下的lib文件夹下-->  
</dependency>  


Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,

scope的分类
compile
默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。同时它们也会被打包。
test
scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
runntime
runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。Oracle
 jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。
provided
provided意味着打包的时候可以不用包进去,别的设施(Web
Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
system
system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,
不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven仓库中引用依赖)。


scope的依赖传递
A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是:
当C是test或者provided时,C直接被丢弃,A不依赖C;
否则A依赖C,C的scope继承于B的scope。

下面是一张nexus画的图。
依赖传递时scope的计算



方式2:编译阶段指定外部lib

    <plugin>  
    <artifactId>maven-compiler-plugin</artifactId>  
    <version>2.3.2</version>  
    <configuration>  
    <source>1.8</source>  
    <target>1.8</target>  
    <encoding>UTF-8</encoding>  
    <compilerArguments>  
    <extdirs>lib</extdirs><!--指定外部lib-->  
    </compilerArguments>  
    </configuration>  
    </plugin>  


方式3:将外部jar打入本地maven仓库

cmd 进入jar包所在路径,执行以下命令

Jar的maven配置

<dependency>  
<groupId>org.apache.thrift</groupId>  
<artifactId>libthrift</artifactId>  
<version>0.9.2</version>  
</dependency>  


将Jar包安装到本地仓库命令:

 mvn install:install-file -Dfile=D:\thrift-0.9.2.jar -DgroupId=org.apache.thrift -DartifactId=libthrift -Dversion=0.9.2 -Dpackaging=jar    

-- DgroupId和DartifactId构成了该jar包在pom.xml的坐标, 对应依赖的DgroupId和DartifactId

-- Dfile表示需要上传的jar包的绝对路径

-- Dpackaging 为安装文件的种类


2. 上传Jar到私服  

命令:

mvn deploy:deploy-file -DgroupId=org.apache.thrift -DartifactId=libthrift -Dversion=1.12 -Dpackaging=jar -Dfile=D:\thrift-0.9.2.jar -Durl=http://ip:port/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty    

-- DgroupId和DartifactId构成了该jar包在pom.xml的坐标, 对应依赖的DgroupId和DartifactId

-- Dfile表示需要上传的jar包的绝对路径

-- Durl私服上仓库的url精确地址(打开nexus左侧repositories菜单,可以看到该路径)

-- DrepositoryId服务器的表示id,在nexus的configuration可以看到





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值