maven学习手记+nexus配置+更换中央仓库为阿里云仓库

本文详细记录了Maven的学习过程,包括基础命令、生命周期、依赖管理、Nexus仓库的下载安装及配置,以及如何将中央仓库替换为阿里云仓库。此外,还介绍了聚合模块、继承、版本命名规则和测试覆盖率报告的生成。
摘要由CSDN通过智能技术生成
                       

本地环境搭建

熟悉基础命令

  • mvn:compile
  • mvn:test
  • mvn:clean
  • mvn:install
  • mvn:package

迁移本地仓库

* 熟悉创建mvn archetype:generate -D….创建maven骨架*

pom.xml|-src|—main|—-java|——package|—-resource|—test|—-java|——package|—-resource|-target  通过compile或者带有compile目标任务的命令 就会编译源文件到target—>classes中(如果真的目标任务,就去看一下maven的生命周期管理,这个有时间再写)|—classes
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

maven的生命周期

大概说一下,重点关注compile
maven生命周期分三套
- clean
- compile
- site
当执行mvn:clean 的时候的过程是
1. pre-clean 执行一些需要再clean之前完成的工作
2. clean 移除所有上次构建生成的文件
3. post-clean 执行clean之后的工作
当执行mvn:compile的过程(plugins插件中的目标)是

validategenerate-sourcesprocess-sourcesgenerate-resourceprocess-resource 复制并处理资源文件,至目标目录,准备打包compile 编译源代码  (如果mvn:compile相当于就执行到这里终止)process-classesgenerate-test-sourceprocess-test-sourcegenerate-test-resourceprocess-test-resource 复制并处理资源文件至目标测试目录test-compile 编译测试源代码 (如果mvn:test就执行到这里终止)process-test-classestest 使用合适的单元框架运行测试,这些测试不会打包和部署。prepare-packagepackage 接收编译好的源代码,打包成可发布的文件,如jar   (如果mvn:package就执行到这里终止)pre-integration-testintegration-testpost-integration-testverifyinstall 将包安装到本地仓库,供其他项目依赖 (如果mvn:install就执行到这里终止)deploy 将最终到包复制到远程仓库,让其他开发人员于项目共享 (如果mvn:deploy就执行到这里终止)
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

当执行mvn:site时会生成一个站点,具体没研究

***eclipse集成maven插件
解决一些配置小问题(更新包结构,让eclipse认识maven项目为java项目,更新pom.xml中maven compile错误,更新idk警告)*

依赖

测试依赖传递
- eg: service模块需要依赖dao模块,那么dao模块首先需要mvn install到repository,service依赖的时候才能有效

dependency中scope元素属性

  • test 测试范围有效,编译和打包失效,需要注意的是如果src/main下的类依赖scope为test的包,打包和运行时会报错,找不到设置为test的依赖。还有如果是test,那么不会将依赖传递到。(eg: unit等)
  • compile 打包,编译有效,测试失效 (eg: log)
  • provided 编译 测试有效,打包不加进去(eg: servlet api包,编译测试时需要,但是不需要打包,因为web应用服务器中就包含了)
  • runtime 运行时有效,编译时失效(eg: mysql驱动)

关于同样的jar不同版本的依赖原理

  • 直接依赖 优于 间接依赖
  • 依赖层级越小  优于 依赖层级越多
    1. 间接依赖 eg: 项目A直接依赖log4j且版本为1.0.4,假设依赖于spring,而spring也依赖log4j 1.2.9。那么A间接依赖log4j 1.2.9,但是如果A直接在pom中配置了直接依赖log4j 1.0.4,那么A项目就依赖1.0.4
    2. 同层级间接依赖 eg: 如果项目A依赖B其中B依赖 log4j 1.0.4,A依赖C其中C依赖 log4j1.0.9 ,那么A依赖log4j哪个版本?答案是 在A项目中如果先写C的依赖再写B的依赖,那么久依赖C的log4j1.0.9

排除依赖

* eg:排除xxxxxx,dependency节点增加exclusions*

<exclusions>    <exclusion>        <groupId>xxxxxx</groupId>        <artifactId>xxxxx</artifactId>    </exclusion></exclusions>
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

聚合modules和继承parent

  • 通过new pom类型的maven项目,管理聚合和继承
    这个聚合和继承功能的project的pom.xml如下
<?xml ………….?>  <modelVersion>4.0.0</modelVersion>  <groupId>org.jm.test</groupId>   <!--项目-->  <artifactId>jm-parent</artifactId>  <!--模块-->  <version>0.0.1-SNAPSHOT</version>   <!--版本(详见版本命名说明)-->  <packaging>pom</packaging>  <!--注意是pom项目-->    <!--提取module中公共部分url-->  <url>http://maven.apache.org</url>    <!--提取module中公共部分properties-->  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>    <!--聚合 地址是模块的位置-->    <modules>    <module>../项目1</module>    <module>../项目2</module>    <module>../项目3</module>    </modules>    <!--依赖管理,设置但是不起作用,只有在被依赖的项目中写明才能生效(只写groupid和artifactid,其他均继承parent中底pom.xml),这样的好处是可以防止被依赖的模块包冲突。被依赖的项目也可以自由选择依赖包(但是版本和其他信息是继承的)。-->    <dependencyManagement>    <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.10</version>      <scope
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值