Maven安装与配置
Posted BurningHUA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven安装与配置相关的知识,希望对你有一定的参考价值。
下载:
1.从官网http://maven.apache.org中下载,下载下来的是一个压缩包,解压即可。因为Maven本身也是用Java实现的。
2.Maven的目录结构
/bin; maven的运行目录,包括maven的核心命令mvn等。
/boot; maven的引导目录
/conf; maven的配置目录,maven的核心配置文件就存放在这里
/lib; maven运行时所需的jar文件
1) 添加MAVEN_HOME,指定Maven的根目录
2) 在path中添加:;%MAVA_HOME%\bin
2.配置本地仓库
打开Maven的核心配置文件settings.xml文件,指定localRepository本地仓库的路径
3.在集成开发环境中配置Maven
1)在Eclipse配置Maven
Wondow-->preferences-->Maven
i. 在installations中添加Maven的根目录
ii. 在 User Settings中指定Maven的核心配置文件settings的目录
2)在IDEA中配置Maven
File-->Settings-->Build-->Build Tools-->Maven
i. 在Maven home directory配置选项中指定Maven的根目录
ii. 在User settings file选项中指定核心配置文件settings的路径
iii. 在Local repository选项中指定本地仓库的路径
vi.勾选两个override选项
2.Maven的目录结构
/bin; maven的运行目录,包括maven的核心命令mvn等。
/boot; maven的引导目录
/conf; maven的配置目录,maven的核心配置文件就存放在这里
/lib; maven运行时所需的jar文件
配置:
1.配置环境变量1) 添加MAVEN_HOME,指定Maven的根目录
2) 在path中添加:;%MAVA_HOME%\bin
2.配置本地仓库
打开Maven的核心配置文件settings.xml文件,指定localRepository本地仓库的路径
3.在集成开发环境中配置Maven
1)在Eclipse配置Maven
Wondow-->preferences-->Maven
i. 在installations中添加Maven的根目录
ii. 在 User Settings中指定Maven的核心配置文件settings的目录
2)在IDEA中配置Maven
File-->Settings-->Build-->Build Tools-->Maven
i. 在Maven home directory配置选项中指定Maven的根目录
ii. 在User settings file选项中指定核心配置文件settings的路径
iii. 在Local repository选项中指定本地仓库的路径
vi.勾选两个override选项
仓库:
1.Maven的仓库是用于存放所有类库的。在羡慕的开发过程中对所有jar的以来都将从仓库中获取。2.Maven的仓库主要分为两种:
1)本地仓库
在自己本机中用专门的一个目录存放的类库
2)远程仓库
在远程主机中存放的类库(Apache的中央仓库就是一个远程仓库)
3.仓库的查找顺序
当在项目中进行类库的依赖时,先是从本地仓库中查找,如果本地仓库有需要的jar,那么将直接从本地仓库中依赖,如果没有,那么就会去远程仓库中查找,然后下载到本地仓库中备份,下次再进行以来的时候,就直接从本地仓库中获取。
1.创建Maven项目:
1)在Eclipse中创建Maven项目
File-->new-->Maven Project 新建一个Maven项目(勾选Create a Simple Project),点击next,填写相应的GAV坐标信息以及打包的方式,再点击finish完成。
2)在IDEA中创建Maven项目
2.Maven项目的目录结构
src/main/java 用于存编写的Java源代码
src/main/resources 用于存放所需的资源文件以及配置文件
src/test/java 用于存放编写的单元测试源代码
src/test/resources 用于存放单元测试时所需的资源文件和配置文件
3. pom.xml文件
每一个Maven项目都有一个pom配置文件,它也是Maven项目中的核心配置文件。在这个文件中可以配置当前maven项目的一些信息(如:依赖配置,插件配置,项目的属性设置等等)
4. 配置项目的基本属性
<properties>
<!-- 设置整个maven项目的编码格式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 配置控制台输出参数的编码格式,解决乱码 -->
<argLine>-Dfile.encoding=UTF-8</argLine>
</properties>
Maven配置插件
Maven本身就是由一系列的插件构成的,因此我们可以通过pom文件配置Maven的一些核心插件。
在下面标签中添加插件的配置信息
<build>
<plugins>
在这里可以配置多个插件
</plugins>
</build>
1.编译插件
<!-- 配置maven编译插件,指定maven编译版本 -->
<plugin>
<!-- 编译插件的项目名称 -->
<artifactId>maven-compiler-plugin</artifactId>
<!-- 编译插件的配置信息 -->
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
2. 打包插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<!-- 打包的配置信息 -->
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
在下面标签中添加插件的配置信息
<build>
<plugins>
在这里可以配置多个插件
</plugins>
</build>
1.编译插件
<!-- 配置maven编译插件,指定maven编译版本 -->
<plugin>
<!-- 编译插件的项目名称 -->
<artifactId>maven-compiler-plugin</artifactId>
<!-- 编译插件的配置信息 -->
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
2. 打包插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<!-- 打包的配置信息 -->
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
依赖与坐标
1.依赖
maven会自动帮我们完成项目所需要的类库依赖,这是maven非常强大的地方,不需要我们手动的将一个个jar文件再拷贝到项目中然后再添加以来配置。并且,Maven在依赖的过程会自动根据依赖的需要将其他间接依赖的jar一并依赖进来(循环依赖)。所以我们只需要以来一些核心类库,那么maven就会将这个类库所需的其他依赖一并完成。
2.坐标
Maven对依赖的查找是基于坐标来完成的。包括我们自己创建的Maven项目同样需要指定坐标。这个坐标有三个重要的属性就是“GAV”
Group Id: 这个指定组织名称,也就是你的项目隶属于哪个公司或组织。
Artifact Id:这个指定模块名称(也可以理解为项目名称),因为一个组织下可以创建多个项目。
Version :模块对应的版本号,一个模块可以有多个版本,方便依赖时使用不同的版本。
说明:当Maven在执行依赖的时候,就是根据这个坐标来进行查找。组织-->模块-->版本
找到对应的jar文件,这样就能精确找到一个需要依赖的类库
2.坐标
Maven对依赖的查找是基于坐标来完成的。包括我们自己创建的Maven项目同样需要指定坐标。这个坐标有三个重要的属性就是“GAV”
Group Id: 这个指定组织名称,也就是你的项目隶属于哪个公司或组织。
Artifact Id:这个指定模块名称(也可以理解为项目名称),因为一个组织下可以创建多个项目。
Version :模块对应的版本号,一个模块可以有多个版本,方便依赖时使用不同的版本。
说明:当Maven在执行依赖的时候,就是根据这个坐标来进行查找。组织-->模块-->版本
找到对应的jar文件,这样就能精确找到一个需要依赖的类库
Maven生命周期
Maven生命周期
Maven中具备三套完整的生命周期,通过这些生命周期可以完成Maven的所有管理内容。
而每一套生命周期都是由多个阶段组成,每一个阶段都是一个独立的命令,每一个阶段的工作都是由一个Maven的插件来完成。所以也就是Maven本身为什么都是由插件组成的。
1)Clean生命周期
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
说明:mvn clean命令,等同于 mvn pre-clean clean。只要执行后面的命令,那么前面的命令都会执行,不需要再重新去输入命令。
2)Default生命周期(重点)
说明:构建的核心部分,编译,测试,打包,部署等等。
validate 验证项目是否正确且所有必要的信息都可用
initialize 初始化构建工作,如:设置参数,创建目录等。
generate-sources 为包含在编译范围内的代码生成源代码。
process-sources 处理源代码。
generate-resources 生成资源文件。
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes 为编译生成的class文件做后期工作, 例如做Java类的字节码增强。
generate-test-sources 为编译内容生成测试源代码。
process-test-sources 处理测试源代码。
generate-test-resources 生成测试所需的资源文件。
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes 为编译生成测试的class文件做后期处理工作。
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package 执行打包前的预处理工作。
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test 预集成测试。
integration-test 按需求将发布包部署到运行测试环境。
post-integration-test 执行整合测试。
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段,这样大大减轻了程序员的工作。
3)Site生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
Maven中具备三套完整的生命周期,通过这些生命周期可以完成Maven的所有管理内容。
而每一套生命周期都是由多个阶段组成,每一个阶段都是一个独立的命令,每一个阶段的工作都是由一个Maven的插件来完成。所以也就是Maven本身为什么都是由插件组成的。
1)Clean生命周期
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
说明:mvn clean命令,等同于 mvn pre-clean clean。只要执行后面的命令,那么前面的命令都会执行,不需要再重新去输入命令。
2)Default生命周期(重点)
说明:构建的核心部分,编译,测试,打包,部署等等。
validate 验证项目是否正确且所有必要的信息都可用
initialize 初始化构建工作,如:设置参数,创建目录等。
generate-sources 为包含在编译范围内的代码生成源代码。
process-sources 处理源代码。
generate-resources 生成资源文件。
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes 为编译生成的class文件做后期工作, 例如做Java类的字节码增强。
generate-test-sources 为编译内容生成测试源代码。
process-test-sources 处理测试源代码。
generate-test-resources 生成测试所需的资源文件。
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes 为编译生成测试的class文件做后期处理工作。
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package 执行打包前的预处理工作。
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test 预集成测试。
integration-test 按需求将发布包部署到运行测试环境。
post-integration-test 执行整合测试。
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段,这样大大减轻了程序员的工作。
3)Site生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
以上是关于Maven安装与配置的主要内容,如果未能解决你的问题,请参考以下文章