Maven入门2


POM(Project Object Model),工程对象模型,是一个XML文件,放在工程根目录下,命名为 pom.xml,其中包含了关于工程、各种配置细节的信息,Maven使用这些信息构建工程。

最小POM

一个最小的POM包含如下元素,

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
</project>
  • project,POM文件的顶级元素
  • modelVersion,必须设置为4.0.0,除非Maven开发者升级了模板,否则这个值永远是4.0.0
  • groupId,项目创建团体或组织的唯一标识,通常是域名倒着写。
  • artifactId,项目的唯一标识,通常是项目名称。
  • version,项目版本,可能是发布版本(RELEASE版本)或者开发版本(SNAPSHOT版本)
Maven坐标
  • groupId,工程组标识
  • artifactId,工程标识
  • version,工程版本

坐标是jar包的唯一标识。
groupIdartifactId定义了artifact在仓库中的位置。

Maven常用命令
  • mvn -v,查看maven版本,也用来检查maven是否安装成功
  • mvn compile,编译,将Java源码编译为class文件
  • mvn test,执行test目录下的测试用例
  • mvn package,打包,把Java工程打包为jar包
  • mvn test,清理环境,清理target文件
  • mvn install,安装,把当前项目安装到maven的本地仓库中
传递依赖与排除依赖
  • 传递依赖
    如果我们的项目依赖了一个jar包,而该jar包又引用了其他jar包,那么,在默认情况下,项目编译时,Maven会将直接引用和间接引用的jar包都下载到本地。
  • 排除依赖
    如果我们只想下载直接引用的jar包,那么需要在pom.xml中做如下配置,即给出需要排除的坐标,这里就要用到<exclusions><exclusion>元素,如,
<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase</artifactId>
  <version>0.94.17</version>
  <exclusions>
    <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
依赖冲突

如果项目中多个jar同时引用了相同的jar,会产生依赖冲突,但Maven采用了两种避免冲突的策略,所以Maven中不存在依赖冲突。

  • 第一种策略,短路优先
    比如,
    本项目->A.jar->B.jar->X.jar,
    本项目->C.jar->X.jar,
    短路优先的策略下,Maven最终会选择 C.jar中引用的X.jar。
  • 第二种策略,声明优先
    如果引用路径长度相同,则采用声明优先策略,即在pom.xml中,谁的声明在前,就使用谁的。
新建Maven项目
  • 新建目录,并在该新目录下执行命令:mvn -B archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
    在这里插入图片描述
    在这里插入图片描述
  • mvn compile,生成target目录。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值