初识Maven

https://mvnrepository.com/

maven中央仓库

目录

一.不依赖于idea创建mavenjava

 基本项目框架

 其中在项目根目录下用cmd运行相关指令

二.在idea中打开mavenjava项目

属性解析:

三.进阶——对依赖的理解

(1)坐标

e.g.

(2)依赖阻断(暴力)

(3)可选依赖(有选择性的)

四.仓库

(1)仓库的类型有:

  (2)顺序

 五.生命周期

 六.Maven继承和聚合

(1)继承

(2)聚合管理

(3)properties属性的使用

通过一个项目来说明:


一.不依赖于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一起被传递,在其子项目中,谁会用到谁来说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值