Maven介绍、下载安装、环境搭建以及Demo测试(中软实训Day1总结)

Maven下载、安装、环境搭建以及Demo测试

一、什么是Maven

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
——摘自《搜狗百科》


1.特点介绍

那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。1

MavenAnt
标准构建文件project.xml 和 maven.xmlbuild.xml
特性处理顺序m a v e n . h o m e / b i n / d r i v e r . p r o p e r t i e s {maven.home}/bin/driver.propertiesmaven.home/bin/driver.properties{project.home}/project.propertiesp r o j e c t . h o m e / b u i l d . p r o p e r t i e s {project.home}/build.propertiesproject.home/build.properties{user.home}/build.properties通过 -D 命令行选项定义的系统特性最后一个定义起决定作用。通过 -D 命令行选项定义的系统特性由 任务装入的特性第一个定义最先被处理。
构建规则构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。构建规则或多或少是静态的,除非使用’script’任务
扩展语言插件是用 Jelly(XML)编写的。插件是用 Java 语言编写的。
构建规则可扩展性通过定义 ‘preGoal’ 和 ‘postGoal’ 使构建 goal 可扩展。构建规则不易扩展;可通过使用 ‘script’ 任务模拟 ‘preGoal’ 和 ‘postGoal’ 所起的作用。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

2.常用命令

发布项目:mvn deploy
编译源代码:mvn compile
启动jetty服务:mvnjetty:run
启动tomcat服务:mvntomcat:run
创建Maven项目:mvn archetype:generate
编译测试源代码:mvn test-compile
根据项目生成的jar:mvn package
生成eclipse项目文件:mvn eclipse:eclipse
生成项目相关信息的网站:mvn site
运行应用程序中的单元测试:mvn test
清除项目目录中的生成结果:mvn clean
在本地Repository中安装jar:mvn install
清除以前的包后重新打包,跳过测试类:mvn clean package -Dmaven.test.skip=true

3.生命周期

Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。

clean(清理)

cleanup(清理所有)

此生命周期旨在给工程做清理工作,它主要包含以下阶段:

pre-clean- 执行项目清理前所需要的工作。

clean- 清理上一次build项目生成的文件。

post-clean- 执行完成项目清理所需的工作.

default(默认)

validate- 验证项目是否正确且所有必要的信息都可用。

initialize- 初始化构建工作,如:设置参数,创建目录等。

generate-sources- 为包含在编译范围内的代码生成源代码.

process-sources- 处理源代码, 如过滤值.

generate-resources-

process-resources- 复制并处理资源文件,至目标目录,准备打包。

compile- 编译项目中的源代码.

process-classes- 为编译生成的文件做后期工作, 例如做Java类的字节码增强.

generate-test-sources- 为编译内容生成测试源代码.

process-test-sources- 处理测试源代码。

generate-test-resources-

process-test-resources- 复制并处理资源文件,至目标测试目录。

test-compile- 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。

process-test-classes-

test- 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package-

package- 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test-

integration-test- 按需求将发布包部署到运行环境。

post-integration-test-

verify-

install-将包安装到本地仓库,给其他本地引用提供依赖。

deploy-完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。

site(站点)

pre-site- 执行一些生成项目站点前的准备工作。

site- 生成项目站点的文档。

post-site- 执行需完成站点生成的工作,如站点部署的准备工作。

site-deploy- 向制定的web服务器部署站点生成文件。2

Maven生命周期参考:Apache Maven Project2,书籍《Maven In Action》
在这里插入图片描述
在这里插入图片描述

4.坐标(依赖)

4.1 依赖范围

compile:编译时依赖在所有阶段都可获得,这是默认值。
provided: 提供的依赖范围用来编译应用程序,但无需部署。若你用到jdk或者应用服务器提供的JAR,则使用此范围,servlet APIs就属于这个依赖范围。测试时,此依赖范围也加入到classpath。
runtime:运行依赖范围在编译阶段是不需要的,只有在运行时需要,比如JDBC驱动程序。
test:测试范围依赖,仅在编译和运行单元测试时需要(比如Junit)。
system 本地依赖,不建议使用。(nexus)

依赖范围编译时依赖测试时依赖运行时依赖是否打入包例子
compileYYYYSLF4J
providedYYYNSERVLET-API
testNYNNJUNIT
runtimeNYYYMYSQL JDBCD RIVER
systemYYYY有nexus后,不用system

4.2 依赖传递

Only compile and runtime scopes are transitive
A->B->C
简单传递依赖:A->C
A->B-C(0.1)
A->C(0.2)
最短路径优先原则: A->C(0.2)
A->B->C(0.1)
A->E->C(0.2)
第一声明优先原则:最终依赖C(0.1)

4.3依赖归类

<properties>
    <spring.version>2.5</spring.version>
</properties>
<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
     </dependency>
</dependencies>

4.4依赖排除

<dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-validator</artifactId>
       <version>4.3.1.Final</version>
       <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
       </exclusions>
</dependency>

5.继承

父maven项目中通过dependenciesManagement中定义公共依赖项
子maven项目中通过dependencies中定义公共依赖项
插件/properties都可以继承

二、下载配置

1.下载安装

下载前需准备

1.JDK
2.Eclipse

1.1 maven官方下载地址

http://maven.apache.org/download.cgi

在这里插入图片描述

2.解压

2.1 将文件解压到本地文件夹
在这里插入图片描述

3.配置环境变量

3.1 新建环境变量MAVEN_HOME,并将变量值设置为maven的解压路径在这里插入图片描述

3.2 编辑环境变量Path,追加%MAVEN_HOME%\bin;
在这里插入图片描述

4.检验是否安装成功

4.1 win+r 输入 cmd
4.2 输入 mvn -v,显示如下图即为安装成功在这里插入图片描述

5.配置Maven本地库

5.1 在F:\Apache Software Foundation目录下新建maven-repository文件夹,该目录用作maven的本地库。
5.2 利用Sublime等文本编辑软件,打开F:\Apache Software Foundation\apache-maven-3.6.1\conf目录下面的settings.xml文件,查找下面这行代码:

<localRepository>/path/to/local/repo</localRepository>

5.3 将该节点移除注释,并根据自己的安装位置修改中间路径

<localRepository>F:\Apache Software Foundation\maven-repository</localRepository>

localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。

当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。

此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。
5.4 修改mirrors标签,在其中加入如下代码块,启动阿里云镜像。

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

6.配置Eclipse的Maven环境

6.1 打开Eclipse ->Window->Preferences->Maven->Installations,右侧点击Add,选择Moven解压路径点击确定。在这里插入图片描述
6.2 选择刚才添加的内容,Apply
在这里插入图片描述
6.3 打开Window->Preferences->Maven->User Settings,配置如下并Apply and Close 完成配置:在这里插入图片描述

三、Demo测试

1.添加Demo

1.1 选择合适位置创建Maven工作空间文件夹maven-workspace,在该文件夹内“按住shift点击鼠标右键”选择在此处打开cmd,运行如下代码。

mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=demo

在这里插入图片描述
1.2 进入Demo目录,cmd输入tree可以查看项目目录结构在这里插入图片描述

2.对Demo进行简单操作

2.1 Demo目录下运行cmd输入如下代码

mvn clean compile exec:java -Dexec.mainClass="com.chinasofti.build.App"

四、Maven资源链接(附)

http://books.sonatype.com/mcookbook/reference/
http://eclipse.org/m2e/
http://mvnrepository.com/
http://maven.apache.org/plugins


版权声明:本文为qq_38255232原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。