Maven

1. Maven 简介

1.1 简介

​ 一款项目管理工具,由java语言进行编写,沿用了java面向对象的思想,把项目开发和管理的过程抽象成了一个 POM (对象模型) ,同时将描述对象的属性方法放到了pom.xml文件中,用于描述对象模型。

1.2 作用

​ 管理jar包,解决jar包间的冲突(jar包:为java的一种文档格式,类似ZIP,为压缩java的文件包。) 2、统一了开发结构,提供了统一标准的项目结构 3、提供标准、跨平台(window-->Linux)的自动化项目构建方式。


2. Maven的安装配置和目录结构

2.1 下载Maven

下载地址:https://maven.apache.org/download.cgi

2.2 环境变量

解压下载的maven包,将bin目录添加到path下

2.3 检查是否安装成功

terminal下执行 mvn-v

2.4 maven项目目录结构

目录 作用
${basedir} 存放 pom.xml 和所有的子目录
${basedir}/src/main/java 项目的 java 源码
${basedir}/src/main/resource 项目的资源,比如 property 文件
${basedir}/src/test/java 项目的测试类,比如 JUnit 代码
${basedir}/src/test/resource 测试使用的资源

2.5 maven常用的构建命令

1
2
3
4
5
6
mvn -v 查看maven版本
mvn compile 用来将src/main/java下的文件编译为class文件,并输出到target中。
mvn test test 用来将src/main/test下的文件进行编译,同时执行一次
mvn package 打包,将项目进行打包,如果是jar打包为jar,war打包为war。
mvn clean 删除编译产生的target文件夹
mvn install 安装jar包到本地仓库中

1.编译java文件

​ mvn compile

2.执行main方法

​ mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello"

修改默认仓库位置

打开maven目录 --> conf --> settings.xml

添加仓库位置配置

1
<localRepository>D:/MavenIDEA/repository</localRepository> 

更改阿里镜像

1
2
3
4
5
6
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3. Maven命令

Maven的命令格式如下:

1
mvn [plugin-name]:[goal-name]

命令代表的含义:执行plugin-name 插件的 goal-name 目标。

3.1 常用命令

命令 描述
mvn --version 版本信息
mvn clean 清理项目临时文件,一般是target目录
mvn compile 编译源代码,一般是编译模块下src/main/java目录
mvn package 项目打包工具,会在模块下的target目录下生成jar或war等文件
mvn test 测试命令,或执行src/test/java/下的junit测试用例
mvn install 将打包的jar/war文件复制到本地仓库,供其他模块使用
mvn deploy 将打包的文件发布到远程参考
mvn site 生成项目相关信息的网站
mvn eclipse:eclipse 将项目转化为Eclipse项目
mvn dependency:tree 打印项目依赖树
mvn archetype:generate 创建Maven的普通java项目
mvn tomcat7:run 在tomcat容器中运行web应用
mvn jetty:run 调用 jetty 插件的 Run 目标,在 Jetty Servlet 容器中启动 web 应用

注意:运行maven命令时,需要定位到maven项目的目录,也就是项目的pom.xml文件所在目录

3.2 命令参数

3.2.1 -D 传入属性参数

例如:

mvn package -Dmaven.test.skip=true

以-D开头,将maven.test.skip设置为true,告诉maven打包的时候跳过单元测试。

3.2.2 -P 使用指定的Profile配置

​ 比如项目开发时有多个环境,比如开发、测试、预发、正式环境,一般在pom.xml中配置。

profiles 定义了各个环境的变量id,filters 中定义了变量配置文件的地址,其中地址中的环境变量就是上面的profile 中定义的值, resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换。

​ 通过maven 可以实现按不同环境进行打包部署,例如:

mvn package -Pdev -Dmaven.test.skip=true

​ 表示打包本地环境,并跳过单元测试。


4. Idea 下配置 Maven 环境

选择 “File” -> "New Projects settings" -> "Settings for new projects"

搜索maven

Maven home directory 改为自己安装路径

User settings file 改为自己安装路径下 conf/settings.xml


5. Maven 项目创建

5.1 创建java项目

5.1.1 新建项目

  1. "File" -> "New" -> "Project"
  2. 选择"Maven" , 设置JDK版本,选择maven 项目的模板。quickstart为模板
  3. GroupId 一般为公司id com.xxx
  4. ArtifactId 为自己起名字
  5. 检查Maven环境,选择”Next“
  6. 右下角弹出的提示框,选择"Enable Auto-Import" (Maven启动自动导入)

5.1.2 编译项目

  1. 点击右上角 "Add Configurations"
  2. 点击"+"号,选择"Maven"
  3. 设置编译项目命令。Name 自定义;Command line 执行的命令:compile
  4. 点击右上角"Run" or "Debug"

5.1.3 打包项目

  1. 点击右上角 "Add Configurations"
  2. 点击"+"号,选择"Maven"
  3. 设置编译项目命令。Name 自定义;Command line 执行的命令:package
  4. 点击右上角"Run" or "Debug"

5.2 创建Web项目

5.2.1 新建项目

  1. "File" -> "New" -> "Project"
  2. 选择"Maven" , 设置JDK版本,选择maven 项目的模板。webapp为模板
  3. GroupId 一般为公司id com.xxx
  4. ArtifactId 为自己起名字
  5. 检查Maven环境,选择”Next“
  6. 右下角弹出的提示框,选择"Enable Auto-Import" (Maven启动自动导入)

5.2.2 修改 JDK 版本

1
2
3
4
5
6
<!-- 修改JDK版本为1.8 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

5.2.3 设置单元测试版本

1
2
3
4
5
6
7
8
9
<!-- junit的版本修改为4.12 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

5.24 删除pluginManagement标签

1
2
3
<pluginManagement>
...
</pluginManagement>