maven学习笔记

Maven是基于项目对象模型(POM)的项目管理工具

/bin目录包含maven运行时的一些脚本

/boot包含类加载器


groupId即是项目的包名

artifactId是模块名,建议使用项目名称


常用命令

mvn -v  查看版本

mvn compile  编译

mvn test 测试

mvn package 打包

mvn clean 删除target目录

mvn install 安装jar包到本地仓库中


打包命名原则:artifactId-version.jar


自动创建目录的两种方式

1、mvn archetype:generate

2、mvn archetype:generate -DgroupId=com.sheepyang.maven04 -DartifactId=maven04-demo -Dversion=1.0.0SNAPSHOT -Dpackage=com.sheepyang.maven04.demo


坐标:构建

仓库:本地仓库、远程仓库

镜像仓库:可以使用国内的镜像仓库

更改仓库位置: 默认存放位置:C:\Users\Administrator\.m2\repository


maven的生命周期和插件

完整的项目构建过程包括:清理、编译、测试、打包、集成测试、验证、部署


maven生命周期:clean 清理项目

pre-clean 执行清理前的工作

clean 清理上次构建生成的所有文件

post-clean 执行清理后的文件

default 构建项目(最核心)

compile、test、package、install

site 生成项目站点

pre-site 生成项目站点前要完成的工作

site 生成项目站点的文档

post-site 生成项目站点后要完成的工作

site-deploy 发布生成的项目站点到服务器上


pom.xml解析

  <groupId>反写的公司网址+项目名</groupId>
  <artifactId>项目名+模块名</artifactId>

<!--

第一个0表示大版本号

第二个0表示分支版本号

第三个0表示小版本号

例如:0.0.1

SNAPSHOT快照

ALPHA内部测试

BETA公测

RELEASE稳定版本

GA正式

-->
  <version></version>版本

<!--

项目打包方式,默认是jar,可以打包成别的格式,比如:war、zip、pom

-->
  <packaging></packaging>包名

  <!-- 项目描述名 -->
  <name></name>
  <!-- 项目地址 -->
  <url></url>
  <!-- 项目描述 -->
  <description></description>
  <!-- 开发人员列表 -->
  <developers></developers>
  <!-- 许可证信息 -->
  <licenses></licenses>
  <!-- 组织信息 -->
  <organization></organization>
  <!-- 依赖列表,比较重要。依赖列表下可以包含多个的依赖项 -->
  <dependencies>
      <!-- 依赖项 -->
      <dependency>
          <groupId></groupId>
          <artifactId></artifactId>
          <version></version>
          <!-- 依赖类型 -->
          <type></type>
          <!-- 依赖范围,例如下面的test,如果在主代码中引用,则会报错 -->
          <scope>test</scope>
          <!-- 分别有两个值true/false,用来设置依赖是否可选,默认是false-->
          <optional></optional>
          <!-- 排除依赖传递列表,比如a依赖b,b依赖c,a不想依赖c的时候可以使用 -->
          <exclusions>
              <exclusion></exclusion>
          </exclusions>
      </dependency>
  </dependencies>
  <!-- 依赖管理 -->
  <dependencyManagement>
      <dependencies>
          <dependency></dependency>
      </dependencies>
  </dependencyManagement>
  <!-- 对构建的行为提供相应的支持 -->
  <build>
      <!-- 插件的列表 -->
      <plugins>
          <plugin>
              <groupId></groupId>
           <artifactId></artifactId>
           <version></version>
          </plugin>
      </plugins>
  </build>
  <!-- 子模块中plugin对父模块的继承 -->
  <parent></parent>
  <!-- 可以指定多个模块,聚合编译 -->
  <modules></modules>



依赖的范围

<scope></scope>

compile:默认的范围,编译测试运行都有效

provided:在编译和测试时有效

runtime:在测试和运行时有效

test:只在测试时有效

system:在编译和测试时有效,与本机系统相关联,可移植性差

import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置



依赖传值

b依赖a,c依赖b,则c自动依赖a,可以用排除依赖取消依赖

见案例




依赖冲突

有重复的依赖,则有以下两种处理方案

1、短路优先,优先解析路径短的

2、先声明先优先,路径长度相同,谁先声明,优先解析谁




聚合和继承

想要将多个项目同时install,可以通过聚合来处理

见案例




使用maven构建web项目





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值