您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
03-Maven安装&配置及基本使用(编译,清理,测试,安装,生命周期)
发布时间:2024-11-17 00:43:20编辑:雪饮阅读()
-
安装maven
解压apache-maven-3.6.1-bin.zip得路径如
D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1
然后在系统的环境变量里面新建系统变量名为MAVEN_HOME
变量值则如
D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1
然后编辑环境变量PATH新建%MAVEN_HOME%\bin
保存后开启新的cmd命令窗口运行mvn -version结果如下
C:\Users\1>mvn -version
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin\..
Java version: 1.8.0_391, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jre-1.8
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
则表示maven安装ok。
配置maven的本地仓库目录
前番我断定默认的maven路径从IntelliJ IDEA中的External Libraries中能找到
根据前番中mysql-connector-java-5.1.32.jar的路径如
C:\Users\1\.m2\repository\mysql\mysql-connector-java\5.1.32
则其路径默认应如C:\Users\1\.m2\repository
找到如D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf\settings.xml中的
<localRepository>/path/to/local/repo</localRepository>
将其去除注释并配置一个你指定的路径比如我这里就在maven的安装目录中新建一个respository目录作为本地maven的仓库目录。
<localRepository>D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\respository</localRepository>
配置maven的阿里云镜像
阿里云镜像
配置阿里云镜像同样在settings.xml中找到节点<mirrors>并在其中添加如:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
maven的编译
将3. 测试web项目里面的web-demo项目拷贝出来。
例如到D:\os\web-demo
首先我们看到D:\os\web-demo\src下面只有main和test两个文件夹。
那么我们在命令行中进入到D:\os\web-demo目录中(pom文件所在目录)
执行mvn compile命令
进行maven项目的编译,首次编译需要下载编译插件。
例如像是这一类输出于cmd窗口中
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
同样也证实了上面配置的maven的阿里云镜像配置成功。
这个下载过程由于依赖挺多的,所以需要耐心稍等片刻。
如果这是直接从中央仓库,那更不得了,更慢。
然后还发现报错信息
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
执行javac -version,如果报错如
'javac' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
则你的java环境应该是没有配置ok,必须是jdk,而不是jre。
新建系统变量JAVA_HOME,值如
C:\Program Files\Java\jdk-1.8
然后编辑系统变量的Path变量新增%JAVA_HOME%\bin
然后此时你的目录如D:\os\web-demo中可能已经产生了target,这是maven compile编译产生的class文件,编译是为了产生class文件,class文件才可以被运行。这里为了保证完整性,所以删除了,重新再次开启新的cmd窗口重新编译。
很明显第二次编译变快了,因为默认已经第一次下载的编译插件已经进入了刚才配置的maven的本地仓库中了(这一点可以进入这里如D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\respository得到了验证)。
并且这次没有报错了。
maven的清理
mvn clean其实也就是干掉target目录,同样也需要下载clean插件
maven的打包
mvn package同样打包也需要下载package的插件
就产生于target中的一个jar包
但由于我这里用的是web项目,所以打包的是war包。如
web-demo-1.0-SNAPSHOT.war
那你比如我们来到之前我们的maven项目如
C:\Users\1\IdeaProjects\mavenProject1目录中去mvn package则打出来的就是jar包,如
mavenProject1-1.0-SNAPSHOT.jar
maven的单元测试
mvn test用于执行单元测试。
那必然说我在之前的maven项目中的src目录中的test目录中建立测试类如
TestMaven.java:
package com;
import org.junit.Test;
public class TestMaven {
@Test
public void test1() throws Exception {
System.out.println("test1");
}
}
那么在该maven项目中运行mvn test同样需要下载测试用的依赖(首次)。
这里需要主要要被执行mvn test的类名必须以Test打头。
maven的install
mvn install将本地项目安装到本地仓库,应是可以被其它项目依赖的jar包了
同样首次需要依赖
则已经产生于本地仓库中了,如D:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\respository\org\example\mavenProject1\1.0-SNAPSHOT\mavenProject1-1.0-SNAPSHOT.jar
而这个路径则是取决于你的maven项目中的pom中的坐标定义如
<groupId>org.example</groupId>
<artifactId>mavenProject1</artifactId>
<version>1.0-SNAPSHOT</version>
maven的生命周期
maven的生命周期分为
clean:清理工作
default:核心工作,例如编译,测试,打包,安装等
site:产生包裹,发布站点等(我们的习惯是一般不用)
那么如图中第二个生命周期中有install,但是他会不会执行第一个生命周期的pre-clean呢?不会的,它只会执行他前面的像是package,test,compile这些同一个周期内的。
刚才我们的mvn install已经证实了这点,在cmd窗口中可以看到test的过程,还有其它之前的周期内节点。
关键字词:maven,生命周期