maven入门

前提

maven 使用的是约定大于配置的方式

约定大于配置 规则

  1. mvn clean compile 默认编译src/main/java下的文件
  2. mvn clean test 默认测试src/test/java下的文件 且测试的类名以Test开头 ,测试的方法名以test开头(且不能只为test)
  3. 引入junit 或其他测试框架后, 点2 对应的约定失效,测试由junit测试框架接管,需要符合junit测试类的规则

安装

  1. 官网下载:https://maven.apache.org/download.cgi

  2. 解压到指定目录

  3. 配置环境变量

新建系统变量:MAVEN_HOME ,变量值:D:\apache-maven-3.6.0(解压的路径)
修改path 新建: %MAVEN_HOME%\bin

  1. 检查检查安装是否成功 mvn -version
C:\Users\23592>mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: F:\storage\maven\apache-maven-3.6.0\bin\..
Java version: 1.8.0_301, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_301\jre
Default locale: zh_CN, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

常用命令

mvn clean compile packge test install

pom.xml 基础框架

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
</project>

依赖配置

依赖传播特性

项目中依赖第三方组件,而第三方依赖又会依赖其他组件,这时候maven会将依赖网络中所有的依赖都加入ClassPath中,这就是maven的依赖传播特性

依赖优先原则

  1. 最短路径优先
    在这里插入图片描述

2.相同路径下 配置在前的优先

在这里插入图片描述

3. 同一个pom相同依赖不同版本,选择后面那个

如下会选择4.12版本

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

可选依赖

依赖不会被传递
<optional>true</optional>

排除依赖

使用exclusions排除依赖 可多个

<dependency>
	<groupId>net.oneandone.ical4j</groupId>
	<artifactId>ical4j</artifactId>
	<version>2.0.4</version>
	<exclusions>
		<exclusion>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</exclusion>
	</exclusions>
</dependency>

依赖范围


支持以下四种依赖范围:
compile(默认):编译范围,编译和打包都会依赖。
provided: 提供范围,编译时依赖,但不会打包进去。如:servlet-api.jar
runtime: 运行时范围,打包时依赖,编译不会。如:mysql-connector-.java.jar
test: 测试范围,编译运行测试用例依赖,不会打包进去。如:junit.jar
system: 表示由系统中CLASSPATH:指定。编译时依赖,不会打包进去。配合一起使用。示例:java.home下的tool,jar

tips

maven依赖查找: https://mvnrepository.com/
查看项目依赖关系 ,idea 快捷键 ctrl+shift+alt+u 或点击

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值