Maven是基于项目对象模型,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。简单来说,其可以帮助我们更有效的管理项目,也是一套强大的自动化的构建工具,覆盖了整个项目的周期 ,提供了仓库的概念,统一的帮助我们管理项目所依赖的jar包,最大可能的避免由于环境变量的不同造成在不同的电脑上不能够运行的问题。
Maven的下载
访问http://maven.apache.org在左侧列表中点击Download进入下载页面,下载在–bin.zip。
Maven的目录结构
下载后解压可以看到其主要目录为:
bin :包含mvn的运行脚本,在命令行中输入mvn就可以调用这些脚本。
boot:包含一个类加载器的框架
conf :配置文件目录
lib :类库
Maven环境变量的配置
如果电脑是多人使用在用户变量中配置,否则在系统环境中配置
新建变量:M2_HOME 值:Maven安装目录
修改path:新添加%M2_HOME%\bin;
验证环境变量是否配置成功:命令提示符中输入命令mvn -v出现下图所示界面为成功。图片包含maven版本java版本号以及系统的一些相关信息。
Maven常用构建命令
mvn -v 查看maven版本
mvn compile 编译
mvn test 测试
mvn package 打包
mvn clean 删除target(其中存放项目经过编译的字节码文件和测试报告)
mvn install安装jar包到本地仓库
创建目录的两种方式
1.archetype:generate 按照提示进行选择
2.archetype:gennerate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
Maven中的坐标和仓库
构件:在maven世界中任何任何一个依赖、插件、项目构建的输出都称为构件。构件通过坐标作为其唯一标识。
仓库:可以分为本地仓库和远程仓库
一个全球仓库的实地址:http://repo.maven.apache.org/maven2
镜像仓库:与其它仓库的内容一致,只是更容易访问。
修改镜像仓库:修改其位置打开E:\apache-maven-3.5.0\conf中的settings.xml文件,找到<mirrors>
标签大概在146行复制其中的示例代码并进行修改。以更改为阿里的镜像仓库为例:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
更改本地仓库:在settings.xml中找到<localRepository>
标签,大概在53行,将其中的值修改为自己想要作为本地仓库的路径。
<localRepository>E:\mavenlib\Repository</localRepository>
更改JDK版本:在settings.xml中找到<profiles>
标签,大概在200行,将其中的值修改为自己安装的JDK版本,以1.8版本为例。
<profiles>
<profile>
<id>jdk18</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>
Eclipse中安装maven插件以及创建maven项目
如果电脑上安装的是eclipse4.0及以上版本或者myEclipse不用安装maven插件,如果不知道版本开在eclipse中windows–Preferences看是否含有maven选项。
安装插件,将下载好的插件复制到eclipse的安装目录下,重新启动eclipse,同样方式可以看到maven选项,点击看到如下警告,对于此警告的处理方式:
1.修改eclipse.ini文件,在其中加入
-vm
Jdk安装路径\bin\javaw.exe
2.更改Installed IREs(因为maven需要jdk支持)点击add->next->选JDK安装目录,添加完成勾选为刚刚添加的。
若maven插件已经有,则从下面步骤开始
更改maven的配置为自己本机的maven,在maven选项中选择Installations–>add–>Directory选择自己本机的maven路径。
设置Settings选择自己想要刚刚修改完本地仓库、镜像仓库、和JDK版本的Settings.xml文件。
新建一个maven项目进行测试,新建一个Maven Project项目,点击File–>new选择Maven Project(若没有选择other在弹出的页面中找),会出现下面界面。
点击next,在其出现的页面中选择quickstart如下图:
点击next–>填写Group Id 和Artiface Id点击finish
可以看到创建的项目,打开创建的项目
打开pom.xml并运行运行方式右击–>Runs As–>Maven build…在接下来的弹出的页面中输入compile命令,再次运行运行过程中输入package命令,打开项目的包看到出现target,打开之后出现下面图中内容,则测试成功。
Maven生命周期:
完整的项目的构建过程包括:清理、编译、测试、打包、集成测试、验证、部署
Maven生命周期:3套他们之间相互独立,每个生命周期中又包含一些阶段,各个生命周期的阶段是顺序的,且后面的阶段依赖与前面的阶段,执行某个阶段时前面的阶段会顺序执行,但不会触发另外两个生命周期中的任何阶段。
clean 清理项目:阶段:pre-clean 执行清理前工作
clean清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(最核心)主要阶段:compile test package install
site 生成项目站点:阶段:pre-site在生成项目站点前要完成的工作
site生成项目的站点文档
post-site在生成项目站点后要完成的工作
site-deploy发布生成的站点到服务器上
使用maven的一些插件进入maven的官网,点击左侧Maven plugins,选择想要使用的插件,以source为例,并在pom.xml中进行设置设置内容如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version><!--插件版本号-->
<executions>
<execution>
<phase>package</phase><!-- 在执行什么的时候用此插件 -->
<goals>
<goal>jar-no-fork</goal><!-- 这个内容在官网上面可以获取到点开自己选择使用的插件在其中选择即可-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
goal可以选择的值,进入插件的页面可以看到如下图:
pom.xml:maven项目的核心管理文件,用于项目描述、组织、管理、和构建信息的管理
pom.xml常用元素
<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">
<!-- 指定当前pom的版本,必须有 -->
<modelVersion>4.0.0</modelVersion>
<!-- 坐标包含的几个标签 -->
<groupId>com.wawa</groupId>
<artifactId>wawa</artifactId>
<!-- 版本号一般由3个数字组成+版本类型第一个表示大版本号 第二个表示分支版本号,第三个表示小版本 版本类型snapshot快照 alpha内部测试 beta公测 Release稳定 GA正式发布 -->
<version>0.0.1-SNAPSHOT</version>
<!-- maven项目打包方式默认是jar 还有其他类型war zip pom -->
<packaging>jar</packaging>
<!-- 项目的描述名 -->
<name>wawa</name>
<!-- 项目的地址 -->
<url>http://maven.apache.org</url>
<!-- 项目描述 -->
<description></description>
<!-- 许可证信息 -->
<licenses></licenses>
<!-- 组织信息 -->
<organization></organization>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依賴列表 导入依赖其实就是导入jar包-->
<dependencies>
<!-- 依赖項 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- <type></type> -->
<!-- 依赖范围
compile:默认的范围,编译测试运行都有效
provided:在编译和测试时有效
runtime:在测试和运行时有效
test:只在测试时有效
system:在编译和测试时有效,与本机系统相关联,可移植性差
import:导入的范围,她只使用在dependencyManagement中,表示从其它pom中导入dependecy的配置
-->
<scope>test</scope>
<!-- 设置依赖是否可选有两个值true和false默认为false -->
<optional></optional>
<!-- 排除依赖传递列表 用来解决依赖冲突方法:短路优先:用最近的先声明先优先:如果路径长度相同,则谁先声明,先解析谁-->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 多个模块在一起编译,在聚合时运用 -->
<modules>
<!-- 聚合将多个项目进行install,安装到本地仓库中,必须依次对其执行install,maven中有种方式可以将其放到一起运行,此方式称为聚合。值为要聚合的maven项目 -->
<module></module>
</modules>
</project>