一、maven安装
- 使用maven之前首先去官网下载mavenhttp://maven.apache.org/download.cgi
下载后配置环境变量
命令行窗口测试一下
如上所述则表示配置成功。
二、maven仓库
仓库类型 | 说明 |
---|---|
本地仓库 | 默认位置在m2/repository,首先查找的一个仓库。 |
私服仓库 | 公司内部的maven私服仓库,处于一个局域网中。 |
中央仓库 | 是apache团队开发的,包含大量的jar包。 |
访问仓库顺序:
优先从本地仓库获取,如果本次仓库没有就去私服获取,最后才去中央仓库获取。
中央仓库默认地址比较慢,我们可以用阿里的镜像,在conf/settings.xml中配置即可
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
同时配置一下本地仓库地址
D:\java_ee\localRepository\maven_repository
idea中的配置
加入-DarchetypeCatalog=internal防止创建骨架时卡死。
三、maven命令
命令 | 中文含义 | 解释 |
---|---|---|
mvn clean | 清理 | 可以清理已经编译好的文件(target目录下的) |
mvn compile | 编译 | 将Java代码编译成为.class文件 |
mvn test | 测试 | 执行项目测试 |
mvn package | 打包 | 将项目打包为jar/war包,放在target目录下 |
mvn install | 安装 | 手动向本地仓库安装一个jar |
mvn deploy | 部署 | 将jar包上传到私服 |
注:在执行后面的命令前,会先执行前面的命令
在idea中,只用点一下就可以
四、maven依赖范围
每个包都有一个依赖范围,默认是compile类型的
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
上面这个junit包只在测试时有效,即对src/test/java下的文件有效。
- compile:对所有时候都有效。
- test:只在测试时有效。
- provided:在编译和测试有效,如servlet-api,由于tomcat内置有这个包,所以在运行和打包时不需要这个包。
- runtime:运行时有效,如JDBC驱动。
- system:编译和测试时有效
五、maven的常用属性
1.编译版本设置
<properties>
<!--maven构建项目使用编码,避免中文乱码-->
<project.build.sourceEncoding>
UTF-8</project.build.sourceEncoding>
<!--编译代码使用的jdk版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<!--运行时使用的jdk版本-->
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
idea中也可以设置
2.可以自定义属性,然后在使用时用$表示即可
<properties>
<junit.version>4.12</junit.version>
<mysql-connector-java-version>5.1.37</mysql-connector-java-version>
</properties>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
可以统一管理版本号,方便后期维护。
3.资源插件
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
这个作用相当于在编译时把src/main/java下后缀xml的文件也扫描到,这样可以在java目录下放置配置文件了。