学习Maven

401 阅读6分钟

初识Maven

Maven这个词翻译为专家|内行,是一款跨平台的项目管理工具,主要服务于基于Java平台的项目构建,依赖管理,项目信息管理

项目构建

项目构建的过程包括:清理项目、编译项目、测试项目、生成测试报告、打包项目、部署项目这几个步骤,这六个步骤就是一个项目的完整构建过程。新建项目也可以通过Maven的包结构来自动生成。

依赖管理

依赖的意思是比如我们开发一个web使用mysql数据库的项目,里面可能需要使用到servlet、mysql、jstl(el表达式)等jar包。我们把需要的jar包统一放在一个lib的文件夹里。如果需要开发同样类型的项目就需要做同样的事情,这就有点浪费时间。Maven就可以很好的帮助我们管理依赖,在一个项目中,它会自动的帮助我们下载好所需要的jar包(前提是你把自己需要的组件通过某种方式告诉了它)

项目信息管理

  • 工程版本控制系统消息
  • 缺陷跟踪系统消息
  • 开发者信息
  • 许可证信息
  • Javadoc
  • 测试覆盖
  • 代码静态分析报告
  • 单元测试覆盖率

Maven的优势

所以我们使用Maven的理由是什么?

  1. 跨平台:windows、mac、linux
  2. 自动下载所依赖的组件
  3. 一键完成部署、发布
  4. 提供多种项目信息管理的方法

就是可以提升我们的工作效率,不用为了找jar包而烦恼,在很多公司里也在运用,可以提供协同办公效率。

Maven安装

Maven因为是Java编写的,需要先安装好Java。先检查Java的安装,在命令行中输入。

echo %JAVA_HOME% // 查看系统变量的值
java -version // 查看java版本

图上所示的就是正常的,如果没有显示路径和版本信息的话,需要检查下java配置

Maven下载网址:maven.apache.org/download.cg… (需要java版本1.6及以上)

windows系统下载Binary开头,.zip为结尾的文件

Maven结构

我这边使用的是:apache-maven-3.2.1版本

Maven目录分析
bin:含有mvn运行的脚本
boot:含有plexus-classworlds类加载器框架
conf:含有settings.xml配置文件
lib:含有Maven运行时所需要Java类库
LICENSE.txt,NOTICE.txt,README.txt针对Maven版本,第三方软件等简要介绍

环境变量配置

  1. 新增环境变量M2_HOME

新增环境变量M2_HOME
变量名为:M2_HOME
变量值:Maven安装目录

  1. 在环境变量Path中,加入%M2_HOME%\bin

  1. 测试Maven安装情况,打开命令行,输入mvn -v

测试Maven
这样输入则是安装成功了!

优化设置(本地仓库与中央仓库)

Maven是依靠项目中的pom.xml(存在每个项目文件夹里)文件来声明所引用的依赖jar包。

  • GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。

  • ArtifactID 是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

  • Version 则对应的版本信息。

Maven会根据所写的坐标依次到本地仓库查询,如果有则引用,没有则到远程仓库中找。远程仓库又分为私服和中央仓库,私服一般为局域网,是公司组织自行搭设的平台,专门供公司内部人员下载,可以提供协同办公的效率。中央仓库为外网连接,在本地仓库中没有找到组件时,Maven会连接中央仓库,在其上面搜索下载。

本地仓库是放置本地所有项目打包的地方,包括所需开发框架,中央仓库则是一个指定所需框架的下载连接。

设置本地仓库

打开Maven安装路径下的\conf\settings.xml,找到localRepository默认为注释状态,修改为:

  <localRepository>D:\Program Files (x86)\apache-maven-3.2.1\Repository</localRepository>

这是指定maven目录下的Repository为本地仓库文件夹。可以自定义其他路径文件夹。

同时找到mirrors标签,添加:

 	<mirror>
	    <id>alimaven</id>
	    <name>aliyun maven</name>
	    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	    <mirrorOf>central</mirrorOf>
	</mirror>

因为Maven提供的地址都是国外的服务器,在国内访问不稳定,这样会造成下载速度慢导致构建的速度慢。加入国内的阿里云的镜像,可以提供项目的构建效率。

设置中央仓库

打开安装目录下的lib\maven-model-builder-3.2.1.jar,注意3.2.1是我当前的版本,其他版本的选择对应的版本号打开,右键使用压缩软件方式打开。进入maven-model-builder-3.2.1.jar\org\apache\maven\model打开pom-4.0.0.xml,搜索http://repo.maven.apache.org/maven2替换成http://maven.aliyun.com/nexus/content/groups/public/

Maven创建

Maven的调用方式是使用系统的cmd命令提示符,一切功能的调用都是通过输入cmd命令来完成,IDE的作用就是集成这些命令,将他们变为软件里面的一个功能按钮。在创建Maven项目前,我们先来了解Maven的项目结构。

Maven项目结构

Project
|---|src 源码
|---|----main 存放主程序
|---|----|----java 存放Java源文件
|---|----|----resources 存放框架或其他工具的配置文件
|---|----test 存放测试程序
|---|----|----java 存放Java测试的源文件
|---|----|----resources 存放测试的配置文件
|---|pom.xml Maven工程的核心配置文件

为什么Maven工程的目录结构是这样的?

因为Maven是自动化构建的,想要自动化的话我们就必须按照它的规矩,将所有的文件按类放好它才能完成构建。

创建Maven文件

在电脑中选择一个目录作为存放Maven项目。先在命令行中切换到项目目录当中:

输入

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

项目执行完成后你会看到一个新建项目文件夹的结构

Maven功能

  • mvn complie 编译
  • mvn install,编译,运行和发布
  • mvn package 编译 运行,不负责发布;不会发布到本地仓库
  • mvn test 编译,如果你test包下面有相关java也编译和运行,但是也一样不会发布到本地仓库中

使用时,需要切换到Maven项目目录中,再键入命令行

Maven常见问题

  1. maven打包编译时后台一直输出警告信息 [WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent! 只要在pom.xml文件中增加一个配置项即可
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
  1. 打包时出现错误:不再支持目标选项 1.5。请使用 1.6 或更高版本。 在pom.xml文件中增加
<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>

Idea配置Maven

配置Idea时,要注意软件默认会启动自己自带的Maven,这个时候我们需要重新修改下设置