Maven常用命令总结

Maven常用命令总结

Maven是什么?

Maven,是一款由Apache组织开发,开源的、跨平台的项目管理工具。Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

准备工作

  • JDK配置

不仅是Java项目的开发需要JDK的支持,Maven项目的运行也需要JDK的支持。因此需要先进行环境的配置—JDK。

查操作系统位数。在cmd终端窗口中,输入systeminfo命令,可以查询电脑的系统信息。(如系统类型:x64-based PC表明操作系统位数为64)。
下载相应版本的JDK。根据操作系统位数,到ORACLE官网去下载。

我的操作系统位数为64位,接受证书后(选中Accept License Agreement),就应该选择JDK版本:jdk-8u172-windows-x64.exe

添加JDK环境变量。具体配置如下:

先将下载好的JDK包放在一个便于以后管理的目录(F:\Java\jdk8)

依次选择:(计算机 ---> 系统属性 ---> 高级系统设置 ---> 环境变量 ---> 系统变量) 中
(新建变量)JAVA_HOME:F:\Java\jdk8
(新建变量)CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(在最前面插入)PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

注:
JAVA_HOME:运行一个命令时,会先检测当前目录下的可执行文件或脚本。如果找不到,会再去系统变量PATH中找。将变量JAVA_HOME加入PATH后,运行或开发一个Java程序时,能从PATH中找到其必须的环境配置JDK。

CLASSPATH:指定的是JDK中第三方jar包存放的位置。

测试JDK是否配置成功。在cmd终端窗口,输入java -version命令,如果能正确显示java的版本信息,说明JDK配置成功。

  • MAVEN配置

从官网下载Maven的压缩包。官网地址中选择下载(apache-maven-3.5.0-bin.tar.gz)

添加Maven环境变量。

先将解压后的maven包放在一个便于以后管理的目录(F:\maven\apache-maven-3.5.0)

依次选择:(计算机 ---> 系统属性 ---> 高级系统设置 ---> 环境变量 ---> 系统变量) 中
(新建变量)M2_HOMEF:\maven\apache-maven-3.5.0
(在最前面插入)PATH%M2_HOME%\bin;

测试MAVEN是否配置成功。在cmd终端窗口,输入mvn -version命令,如果能正确显示java的版本信息,说明JDK配置成功。

在IDEA中新建一个Maven项目

1. 指定项目的SDK

maven-create-1

SDK即开发环境。选择JDK所在目录(F:\Java\jdk8)即可。

2. 指定项目名称

maven-create-2

这里的GroupId一般是公司域名。ArtifactId是在该组中确定该项目的唯一Id,也就是项目名称。Version就是该项目的版本。

maven-create-3

这里的Project name就是项目名称,为了增加可读性一般与ArtifactId命名一致。Project Location就是新建的项目存放的地址。

3. 项目结构展示

maven-create-4

src/main/java就是maven管理项目的默认目录。groupId-artifactId定位就是com.netopstec.learnMaven(刚刚手动新建的目录)。

4. 新建一个测试用的java类

maven-create-5

新建一个类FirstMavenProject.java,类中有一个方法saySomething()。实际代码如下:

package com.netopstec.learnMaven;

/**
 * @author zhenye 2018/4/28
 */
public class FirstMavenProject {
    public String saySomething () {
        return "This is my first maven project!";
    }

    public static void main(String[] args) {
        System.out.println(new FirstMavenProject().saySomething());
    }
}

IDEA对maven的支持

1. maven插件

IDEA默认集成了maven插件。利用maven插件,我们可以简单地对项目进行打包,测试等等。但我们需要知其然,知其所以然。也就是我们需要理解工具中Plugins的按钮实际是执行了哪些maven命令。

IDEA中的maven插件如下图所示:

IDEA-maven-plugin

2. 添加测试文件

maven-test-1

新建一个测试文件FirstMavenProjectTest.java,实际代码如下:

import com.netopstec.learnMaven.FirstMavenProject;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

/**
 * @author zhenye 2018/4/28
 */
public class FirstMavenProjectTest {

    @Test
    public void testDoSomething(){
        FirstMavenProject project = new FirstMavenProject();
        String result = project.saySomething();
        assertEquals("This is my first maven project!",result);
    }
}

一个单元测设方法主要有两个要求:1.方法加注解@Test;2.方法返回值为void。用组合快捷键(Alt + Enter),我们可以选择将进行单元测试必须的依赖导入pom.xml文件中。导入成功后pom文件如下图所示:

maven-test-2

maven常用命令及其作用

IDEA中有自带的Terminal终端工具,我们可以在里面根据实际需求键入相应的mvn命令。

mvn clean test命令

这个命令,是执行所有的单元测试方法。执行结果如下(BUILD SUCCESS),说明测试通过。

command-clean-test

详细的日志信息如下:

F:\workspace\learnMaven>mvn clean test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building learnMaven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ learnMaven ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learnMaven ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learnMaven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to F:\workspace\learnMaven\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learnMaven ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory F:\workspace\learnMaven\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learnMaven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to F:\workspace\learnMaven\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ learnMaven ---
[INFO] Surefire report directory: F:\workspace\learnMaven\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running FirstMavenProjectTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.451 s
[INFO] Finished at: 2018-04-28T17:26:24+08:00
[INFO] Final Memory: 15M/211M
[INFO] ------------------------------------------------------------------------

F:\workspace\learnMaven>

从日志信息我们可以看到,mvn clean test命令的作用:

  1. 先清理缓存: maven-clean-plugin:2.5:clean (default-clean) @ learnMaven
  2. 加载主程序src需要的资源: maven-resources-plugin:2.6:resources (default-resources) @ learnMaven
  3. 编译learnMaven项目: maven-compiler-plugin:3.1:compile (default-compile) @ learnMaven
  4. 加载测试程序test需要的资源: maven-resources-plugin:2.6:testResources (default-testResources) @ learnMaven
  5. 编译测试程序—@test注解标注的方法: maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learnMaven
  6. 执行test目录下的所有测试方法: maven-surefire-plugin:2.12.4:test (default-test) @ learnMaven

执行完上述命令后,我们会发现在项目中多了一个目录target。这个目录中的目录结构跟该命令实际执行的命令相吻合。

maven-test-3

mvn clean package命令

这是一个打包命令。执行完该命令后,我们会发现,在target目录中又多了一个文件(learnMaven-1.0-SNAPSHOT.jar)。也就是说,这个命令会将整个learnMaven项目压缩成一个文件,但是别的项目无法之间引用这个包。。打开lib文件夹(第三方jar包的文件库),我们发现有很多类似名称的的文件夹,其实我们现在生成的jar包,已经跟这些jar是一样的了。

从日志信息我们可以看到,mvn clean package命令的作用:

  1. 会执行mvn clean test命令中1-6步,即所有命令。
  2. 打成jar包: maven-jar-plugin:2.4:jar (default-jar) @ learnMaven

maven-test-4

mvn clean install命令

从日志信息我们可以看到,mvn clean install

  1. 会执行mvn clean test命令中1-6步,即所有命令。
  2. 打成jar包: maven-jar-plugin:2.4:jar (default-jar) @ learnMaven
  3. 加入本地仓库,其他项目可以引用: maven-install-plugin:2.4:install (default-install) @ learnMaven

maven-test-5

到日志显示的目录下去找该文件,发现确实多了两个文件。也就是把这两个文件加入了本地仓库中。如下图所示:

maven-test-6

运行jar文件

(learnMaven-1.0-SNAPSHOT.jar),是一个jar文件,我们通过java命令直接运行该文件,会报错如下:

maven-test-7

由于这个项目里面有一个main方法,该方法无法加入打包后的文件。如果我们需要运行main方法,可以通过如下命令:

# 告诉maven工具,main方法在哪儿
mvn exec:java -Dexec.mainClass="com.netopstec.learnMaven.FirstMavenProject"

效果图如下:

maven-test-8

当然,我们更应该关注的是maven如何管理我们的项目,而不是本身这个项目该怎么去运行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值