maven中央仓库
目录
一.不依赖于idea创建mavenjava

基本项目框架

其中在项目根目录下用cmd运行相关指令
mvn compile编译我的项目(会出来target文件夹)
mvn clean 清理target
mvn clean compile先清理再编译
mvn clean test测试代码
mvn clean package打包会形成一个jar包(mavenjava项目是jar包,web项目是war包)
![]()
mvn clean install打包到本地仓库
二.在idea中打开mavenjava项目

属性解析:
groupId:组织标识,一般为:公司网址的反写+项目名
artifactId:项目名称,一般为:项目名-模块名
version:版本号 形式为0.0.1-SNAPSHOT:
第一个 0 表示大版本号,第二个 0 表示分支版本号,第三个 0 表示小版本号
SNAPSHOT -- 快照版本,ALPHA -- 内侧版本,BETA -- 公测版本,RELEASE -- 稳定版本,GA -- 正式发布
packaging:打包的方式,如:pom, jar, maven-plugin, ejb, war, ...
clissifier:用来帮助定义构件输出的一些附属构件。

dependencies中添加的是本地仓库中或者是maven中心库中的相关依赖
在idea右侧项目中的生命周期里包含mvn的可执行性程序,可以通过双击运行,依赖项里可以查看引入的依赖。
三.进阶——对依赖的理解
(1)坐标

- 三维坐标:引用依赖包的三维坐标,用来定位该依赖包;
- scope: 控制该依赖包在什么情况下会被加到 classpath 中;
classpath范围,Maven项目在开发工程中有三套classpath
- 主代码:main下面的都是主代码在编译的时候的依赖
- 测试代码:test下是测试代码编译的时候的依赖
- 运行时:main代码在运行的时候对包的依赖
e.g.

依赖关系:makefriend-》hellofriend-》hello01
(2)依赖阻断(暴力)
在hellofriend添加,不管之后的项目makefriend是否要依赖于hello01

makefriend不会有hello01的依赖

(3)可选依赖(有选择性的)
在makefriend中添加

也不会有hello01的依赖
四.仓库
(1)仓库的类型有:
- 本地(local)* 在settings.xml的

- 中央(central)这个仓库由 Maven 社区管理。不需要配置。需要通过网络才能访问。
- 远程(remote)
(2)顺序

五.生命周期
| 生命周期 | clean | default | site |
| 阶段(phase),执行顺序由上至下 | pre-clean | validate | pre-site |
| clean | initialize | site | |
| post-clean | generate-sources | post-site | |
| process-sources | site-deploy | ||
| generate-resources | |||
| process-resources | |||
| compile(编译测试) | |||
| process-classes | |||
| generate-test-sources | |||
| process-test-sources | |||
| generate-test-resources | |||
| process-test-resources | |||
| test-compile | |||
| process-test-classes | |||
| test(测试) | |||
| prepare-package | |||
| package(打包) | |||
| pre-integration-test | |||
| integration-test | |||
| post-integration-test | |||
| verify | |||
| install(上传) | |||
| deploy |
实际的工作还是由插件来完成的,这意味着插件需要和阶段绑定起来。Maven已经事先将很多核心插件绑定到对应的阶段,这样用户几乎不用配置就有构建Maven项目。Maven的内置绑定如下:
| 生命周期 | 阶段(phase) | 插件目标 |
| clean | clean | maven-clean-plugin:clean |
| default | process-resources | maven-resources-plugin:resources |
| compile | maven-compiler-plugin:compile | |
| generate-test-resources | maven-resources-plugin:testResouces | |
| test-compile | maven-compiler-plugin:testCompile | |
| test | maven-surefire-plugin:test | |
| package | 打包类型是jar时:maven-jar-plugin:jar; | |
| 打包类型是war时:maven-war-plugin:war | ||
| install | maven-install-plugin:install | |
| deploy | maven-deploy-plugin:deploy | |
| site | site | maven-site-plugin:site |
| site-deploy | maven-site-plugin:deploy |
六.Maven继承和聚合
(1)继承
继承就是避免重复,maven的继承也是这样,它还有一个好处就是让项目更加安全。
可继承的POM元素
groupId :项目组 ID ,项目坐标的核心元素;
version :项目版本,项目坐标的核心元素;
description :项目的描述信息;
organization :项目的组织信息;
inceptionYear :项目的创始年份;
url :项目的 url 地址
develoers :项目的开发者信息;
contributors :项目的贡献者信息;
distributionManagerment :项目的部署信息;
issueManagement :缺陷跟踪系统信息;
ciManagement :项目的持续继承信息;
scm :项目的版本控制信息;
mailingListserv :项目的邮件列表信息;
properties :自定义的 Maven 属性;
dependencies :项目的依赖配置;
dependencyManagement :醒目的依赖管理配置;
repositories :项目的仓库配置;
build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;
reporting :包括项目的报告输出目录配置、报告插件配置等。
(2)聚合管理
我们在平时的开发中,项目往往会被划分为好几个模块,比如common公共模块、system系统模块、log日志模块、reports统计模块、monitor监控模块等等。这时我们肯定会出现这么一个需要,我们需要一次构件多个模块,而不用每个模块都去mvn。
(3)properties属性的使用

通过 properties元素用户可以定义一个或多个 maven 属性,然后在 maven 的其他地方使用 ${属性名称} 的方式引用该属性,这种做法的意义在于消除重复和统一管理。比如,需要在多个地方重复声明同样的 SpringFramework 版本,现在只需要在一个地方声明就可以。
通过一个项目来说明:

项目结构

因为使用了dependencyManagement,所以一些全局的依赖不用随着parent一起被传递,在其子项目中,谁会用到谁来说明。
1098

被折叠的 条评论
为什么被折叠?



