maven学习笔记

一、安装和配置

1.安装

前提条件:已经安装好适配maven具体版本的jdk环境,本教程使用的是jdk8(Maven 3.3+ require JDK 1.7 or above)

下载Apache Maven,访问 Maven官方网站;下载 Maven 的 zip 文件,例如: apache-maven-3.6.0-bin.zip,将它解压到你要安装 Maven 的文件夹。比如:D:\DevelopmentTools\apache-maven-3.6.0

2.配置

添加环境变量

1
2
MAVEN_HOME:D:\DevelopmentTools\apache-maven-3.6.0
PATH:%MAVEN_HOME%\bin

3.安装验证

1
mvn –version

4.优化配置

编辑maven\conf\settings.xml ,如: D:\DevelopmentTools\apache-maven-3.6.0\conf\settings.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
  <!-- 1.设置本地仓库
<localRepository>D:/maven/r2/myrepository</localRepository>
-->

<mirrors>
<!-- 2.修改为阿里云镜像地址 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

<profiles>
<!-- 3.配置jdk环境,不代表安装的jdk版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>

二、创建简单maven项目

创建一个目录设为mavendemo,在里面添加一下内容,除了pom.xml,都是文件夹。必须要这样创建项目,maven才能识别。

1
2
3
4
5
6
7
8
9
.
├── pom.xml
└── src
├── main
│   ├── java
│   └── resources
└── test
├── java
└── resources

创建两个java文件。src/main/java/com/qcmoke/Helloworld.javasrc/test/java/com/qcmoke/HelloTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.
├── pom.xml
└── src
   ├── main
   │   ├── java
   │   │   └── com
   │   │   └── qcmoke
   │   │   └── Helloworld.java
   └── resources
   └── test
   ├── java
   │   └── com
   │   └── qcmoke
   │   └── HelloTest.java
   └── resources

Helloworld.java

1
2
3
4
5
6
7
8
package com.qcmoke;

public class Helloworld {
public String sayHello(String val) {
System.out.println("hello "+val);
return "hello "+val;
}
}

HelloTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.qcmoke;

import org.junit.Test;
import junit.framework.Assert;
import com.qcmoke.Helloworld;

public class HelloTest {

@Test
public void testSayHello() {
Helloworld h = new Helloworld();
String result = h.sayHello("jack");
Assert.assertEquals("hello jack", result);
}
}

pom.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
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.qcmoke</groupId>
<artifactId>mavendemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>mavendemo</name> <!--指定maven项目名称,不指定那么默认使用工程名称作为maven项目名称-->
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>

</dependencies>
</project>
1
2
mvn compile #编译源代码
mvn test #运行测试,包括编译源码

mvn常用命令:

1
2
3
4
5
6
mvn compile #编译源代码
mvn test-compile #编译测试代码
mvn test #运行测试,包括编译源码
mvn clean #清除产生的项目
mvn package #打包,根据pom.xml打成war或jar。如果pom.xml中设置 war,则此命令相当于mvn war:war;如果pom.xml中设置 jar,则此命令相当于mvn jar:jar
mvn install #在本地Repository中安装jar(需要先打包)

三、Eclipse创建maven项目

给Eclipse配置maven

找到Window-->Preferences-->Maven-->Installations-->add-->External-->Directory,将D:\DevelopmentTools\apache-maven-3.6.0添加到Eclipse中,然后Apply and Close

找到Window-->Preferences-->Maven-->User Setting,将Global Settings和User Settings的路径都修改为D:\DevelopmentTools\apache-maven-3.6.0\conf\settings.xml

创建项目

New-->Other-->Mavven Project

选中Create project sinple name and location,然后Next,填写下图内容后Finish即可创建完成。

1552852222726

创建包名和java文件

1552852684115

Helloworld.java

1
2
3
4
5
6
7
8
package com.qcmoke;

public class Helloworld {
public String sayHello(String val) {
System.out.println("hello "+val);
return "hello "+val;
}
}

HelloTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.qcmoke;

import org.junit.Test;
import junit.framework.Assert;
import com.qcmoke.Helloworld;

public class HelloTest {

@Test
public void testSayHello() {
Helloworld h = new Helloworld();
String result = h.sayHello("jack");
Assert.assertEquals("hello jack", result);
}
}

pom.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
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.qcmoke</groupId>
<artifactId>mavendemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>mavendemo</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>

</dependencies>
</project>

右键项目Run As 选择Maven Build…后,在Goals中输入compile后点击Run开始编译

创建web工程

创建项目

New-->Other-->Mavven Project

选中Create project sinple name and location,然后Next,填写下图内容后Finish即可创建完成。注意打包方式要选择war

1552855834062

生成webapp相关文件。右键项目,选择properties>Project Facets,先取消Dynamic Web Module勾选后点击Apply,然后再勾选,会多出来Further configuration available...的链接,点击这个链接,会看到下图的弹框。在Content directory输入框里的内容改为src/main/webapp

1552855209067

修改好后,点击Ok,在点击Apply and Close即可创建webapp相关文件

1552856148800

pom.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
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qcmoke</groupId>
<artifactId>mavenweb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
<!-- 编译字符集 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

<!-- 依赖管理配置 -->
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

<!-- 优化el表达式提示 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1.3-b06</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<!-- 默认值为compile -->
</dependency>

</dependencies>
</project>

四、依赖范围

compile范围:

  • 对主程序有效
  • 对测试程序有效
  • 参与打包
  • 参与部署

test范围:

  • 对主程序无效
  • 对测试程序有效
  • 不参与打包
  • 参与部署

provided范围:

  • 对主程序有效
  • 对测试程序有效
  • 不参与打包
  • 不参与部署


----------- 本文结束 -----------




如果你觉得我的文章对你有帮助,你可以打赏我哦~
0%