Maven学习笔记

一、大致介绍

1.maven介绍及环境搭建

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

下载maven须在apache.org下载,并配置环境变量。或者在安装eclispe会自带maven的插件。

2. maven的目录结构

src 

    -main

        -java

            -package

    -test

        -java

            -package

    resource

 

二、基础知识

1.maven常见命令

maven -v 查看maven版本

            complie 编译

            test 测试

            package 打包

            clean 删除

            install 安装jar包到本地仓库

2.archetype插件用于创建符合maven规定的目录骨架

(1)mvn archetype:generate   按照提示进行选择

(2)mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名 

-DartifactId=项目名-模块名

-Dversion=版本号

-Dpackge=项目包

3.maven中的坐标和仓库

坐标

    构件

仓库

    本地仓库和远程仓库

(1)镜像仓库:

一旦配置了镜像,原仓库将不能被访问。因为远程仓库在国外,有可能不稳定,镜像仓库在国内较为稳定

在setting.xml中找到<mirror></mirror>标签

修改:

<mirror>

<id>maven.net.cn</id>

<mirrorOf>central</mirrorOf>

<name>central mirror in china</name>

<url>http://maven.net.cn/content/groups/public</url>

<mirror>

(2)修改本地仓库默认位置

找到setting中的<localRepository></localRepository>标签,修改其中的个路径;

将setting.xml复制到修改的新位置 

4.maven生命周期

clean清理项目:pre-clean 执行清理前的工作,clean情理上一次构建生成的所有文件,post-clearn执行清理后的文件

default构建项目(最核心):

compile,test,package,install

site生成项目站点: 
pre-site在生成项目站点前完成的工作,site生成项目的站点文档,post-site在生成项目站点后要完成的工作,site-deploy发布生成的站点到服务器上

 5.pom.xml介绍

(1)基本标签

 <project></project>为根元素,包含pom的约束信息

<modelVersion></modelVersion>指定当前pom的版本,必须元素

以下的四个标签,共同包含了坐标

<groupId>反写的公司网址+项目名</groupId>,

<artifactId>项目名+模块名</artifactId>,表示实际项目中的模块

<version></version>,表示当前项目的版本号,第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号

snapshot快照,alpha内部测试,beta公测,Release稳定,GA正式发布

<packaging></packaging>打包的方式,不指定时自动打包为jar

(2)其余标签

<name></name>项目名,<url></url>项目地址,<description></description>项目描述等等

(3)依赖列表

依赖列表下包含许多的依赖项<dependency></dependency>

<dependencies>

     <dependency>

         坐标标签

         <scope></scope>依赖的适用范围

         <optional></optional>依赖是否可选,默认为false

         <exclusion></exclustion>排除依赖传递列表

     </dependency>

</dependencies>

(4)依赖管理

<dependencyManagement></dependencyManagement>主要用于定义在父类模块中,给子模块进行继承

(5)<bulid>标签中包含<plugins>插件列表,其中可包含多个<plugin>插件

(6)parent用于继承,modules用于编译的聚合

5.依赖详解

(1)依赖范围

用于控制依赖与三种classpath(编译,测试,运行)的关系。通过<scope>标签实现

compile都有效,

provided编译时和测试时有效,

runtime测试运行时有效,

test测试时有效,

system编译和测试时有效,需要与本机系统相关联,

import,导入的范围,只使用在 dependencyManagement中,表示从其他的pom中继承的依赖。

(2)依赖传递

A依赖于B,B依赖于C时,A也将自动依赖于C。使用exclusion时,可将依赖传递排除

(3)依赖冲突

原则:

a.短路优先:A->B->C->X;  A->D->X;

优先走通过D的线路

b.先声明先优先:在路径长短相同时,谁先声明谁优先

(4)聚合

a.将<packaging>标签中jar改为pom

b.创建<modules>标签,添加<module>标签,向其中添加需要聚合的内容

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值