Maven
[toc]
介绍
Maven 是一个项目管理工具, 可以对 Java 项目进行构建、依赖管理.
Maven 大概的原理是管理一个本地仓库, 如果本地仓库里没有所需的包, 就到远程仓库去下载
并且能有效减少项目的体积, 也就是把代码和需要的包隔离开, 只需要对包的配置文件(pom.xml)进行版本控制即可
安装
Maven 不需要安装, 从官网下载下来之后, 解压到文件夹, 配置环境变量就可以使用了. 下载地址 推荐下载3.5.4的bin版本
配置环境变量
新建环境变量
MAVEN_HOME
: ‘D:\apache-maven-3.5.4’
然后加到Path : ‘%MAVEN_HOME%\bin’
# 测试
mvn -version
修改配置文件
打开 MAVEN_HOME\conf\setting.xml
- 修改仓库地址
找到其以 <!-- localRepository
开头的注释, 在这条注释下面
`
- 修改下载源
在 <mirrors></mirrors>
之间加入
1
2
3
4
5
6
7
<!-- 注,这个是mirror,也要添加的,即mirrors标签之间会有多个mirror标签 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
新建项目
使用idea, 新建Maven工程
关于脚手架, 建议选取 maven-archetype-quickstart
然后设置中选中maven 的路径(会自动根据 .setting.xml
寻找到配置并自动导入)
语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!-- 默认版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 项目配置 -->
<groupId>com.neu.edu</groupId>
<artifactId>his-system</artifactId>
<version>1.0.0</version>
<!-- 项目名称-->
<name>his-system</name>
<!-- 项目将来的网址,这里暂时用不到-->
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!-- 自己加的,描述项目-->
<description>HIS云平台管理系统</description>
<!-- 属性配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<!-- 定义变量,方便下文使用 -->
<mysql.version>8.0.20</mysql.version>
</properties>
<!-- 依赖 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--生命周期-->
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- 引用上文的变量,这样修改时只需要在properties中修改就可以了,不需要来回翻 dependency -->
<version>${mysql.version}</version>
</dependency>
</dependencies>
<!-- 构建-->
<build>
</build>
依赖范围
一般就是 compiler 和 test. compile : 编译, 测试, 运行 test : 测试 provided: 编译, 测试(一般是web中使用, 避免和容器提供的环境冲突) runtime : 测试, 运行 system : 和provided相似, 但是慎用, 容易造成不可移植的问题(就是用本地的依赖, 远程仓库中没有的情况) import : 极少使用, 用于在模块很多时, 继承依赖的版本号
动作
- clean 清空target
- compile 编译
- package 编译, 测试并打包(jar, 存放在target中)
- test 单元测试(可通过’Toggle ‘Skip tests’ Model’ 按钮来跳过单元测试)
- install 上传到本地仓库(会根据包名自动生成路径)
- deploy 上传到远程仓库
单元测试
创建好 maven 项目之后, 会自动创建单元测试
1
2
3
4
5
// 单元测试的函数必须有@Test注解,并且返回值一定是void
@Test
public void log(){
}
常见问题
中文乱码
maven 输出乱码: 在 steeing -> Build Tools -> Maven -> Runner 中新建 变量
在pom.xml文件中出现红色
1
Could not transfer artifact org.springframework.boot:spring-boot-starter-parent
这时候可以去左上角的 File->setting
里面, 将maven设置为自己的版本(偶尔会切换成idea自带的版本)
下载失败
Jar包下载失败 .lastUpdate可能会导致下不下来
main无法运行(没有绿色箭头)
核心思路:
将 src/main/java
设置为源代码
将 src/test/java
设置为测试代码
在 project Stucture 中或者在文件夹右键上, 将上述两个文件夹修改正确
规范
在 src/main/resources
中存放静态的配置文件
将 src/main/java
存放源代码
将 src/test/java
存放测试代码
src/main/java
中, 存放的都是包, 包中包含java代码