java中的接口是类吗
255
2022-10-30
maven入门
本文可作为,孔浩maven课程的学习笔记
下载,安装
自己去看看
mvn基本概念
使用groupId,artifactId,version三个只来指定一个项目
例如
groupId一般是公司名称.项目名称
artifactId一般是就是上面那个大项目的子项目名称
version就是x.x.x-里程碑
里程碑包括
SNAPSHOT(程序员正在开发的版本)
alpha(程序员内部测试的版本)
beta(用户测试版本)
Release(RC 正式发布版)
GA(General Availability 广泛可用,官方推荐的使用版本)
在maven中一般用的是SNAPSHOT或者release
mvn 常用命令汇总
mvn compile
会在src的同级目录下生成target/classes
mvn test
会在src的同级目录下生成target/test-classes,target/surefire,target/surefire-report
mvn clean
删除target文件夹
mvn package 是打成jar
mvn install 是打成jar,并且把jar放到仓库里(本机的仓库)
mvn archetype:generate 就是产生一个maven项目
如果是第一次运行这个命令,首先会下载很多相关文件
然后列出项目模板...
然后进入互动界面
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): xxx
会默认给出一个项目模板(所以直接回车即可)
然后选择对应的项目模板的版本号(一般会默认给出,直接回车即可)
选择groupId,artifactId,version等等
然后回默认指定package,此时直接回车即可
如下图,comfirm properties configuration下需要键入y,别的就是回车
依赖的作用域
compile,import,provided,runtime,system,test
import和system暂且不说
compile 编译的时候就把依赖加入,打包的时候也会加入
provided 编译和测试的时候会加入,打包的时候不会加入 例如tomcat的lib下那些jar
runtime 运行是依赖,编译的时候不会加入 例如myslq的连接包
test 只在test的时候加入,编译和打包的时候不要 例如junit
compile是maven默认的
依赖传递
如果项目A->spring-bean-2.2.3.jar
如果项目B->spring-bean-2.2.4.jar
项目C->A,B
那么项目c内加入的就会是spring-bean-2.2.3.jar
为什么?
因为在pom.xml里先写的是A#
如果项目A1->A2->spring-bean-2.2.3.jar
如果项目B->spring-bean-2.2.4.jar
项目C->A,B
那么项目c内加入的就会是spring-bean-2.2.4.jar
为什么?
因为从c到spring-bean-2.2.4.jar比从c到spring-bean-2.2.3.jar的距离短
依赖排除
如果我不想使用spring-bean-2.2.4.jar
怎么办?
在项目c里引用b的时候加上
另外maven dependency 里面有个optional选项
默认为false
项目b的pom中引用了组件c,且c的optional是false 那么如果项目a引用项目b的时候 也会默认的把组件c加上
如果b的pom中引用了组件c,且c的optional是true 那么如果项目a引用项目b的时候 就不会引用组件c 如果还需要组件c 那么只能多加一个dependency
项目聚合
我们可以使用maven带有的聚合功能
我们在eclipse里新建一个maven工程,packaging选择pom
在新项目的pom.xml的project下加入:
然后对这个工程的test compile都会依次对它所聚合的项目进行test,compile
项目继承
在子项目里写下
同时,可以在父项目里把子项目需要的jar包都写入
例如
子项目的pom的dependency就不需要写
version和scope了
另外再说明一下
在父项目里
直接写
子项目也会默认加载父项目所依赖的jar
如果是dependencyManagement
那么需要在子项目里显式的加入dependency
那父项目的dependencyManagement到底干了什么事呢?
统一了项目中依赖的外部组件的版本
另外如果myeclipse报这错误
ArtifactDescriptorException: Failed to read artifact descriptor for com.alibaba:druid:jar:0.2.23: ArtifactResolutionException: Failure to transfer com.alibaba:druid:pom:0.2.23 from was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact com.alibaba:druid:pom:0.2.23 from/to central (The operation was cancelled.
项目右键-->Maven4MyEclipse-->update project Configuration
选择上force update of snapshots/releases 然后OK 即可
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~