Maven的基本概念+入门程序

一、Maven的基本概念

Maven(翻译为"专家""内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理

1.1、项目构建

  项目构建过程包括【清理项目】【编译项目】【测试项目】【生成测试报告】【打包项目】【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

  理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

1.2、依赖管理

  依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是自动下载项目所需要的jar包,统一管理jar包之间的依赖关系

1.3、使用Maven的好处

Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

Maven的每一个动作都拥有一个生命周期,例如执行 mvninstall 就可以自动执行编译,测试,打包等构建过程

  只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情

使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二、Maven下载

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

下载完成后,得到一个压缩包,解压,可以看到maven的组成目录

·        bin:含有mvn运行的脚本

·        boot:含有plexus-classworlds类加载器框架

·        conf:含有settings.xml配置文件

·        lib:含有Maven运行时所需要的java类库

·        LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

三、Maven安装

1、首先要确保电脑上已经安装了JDK(jdk 1.6+的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。(使用Echo %JAVA_HOME%Java –version命令)

2、对apache-maven-3.2.3-bin.zip进行解压缩:apache-maven-3.*.*-bin.zip进行解压缩,例如解压到如下目录(解压目录最好不要有中文)

3、设置系统环境变量:MAVEN_HOME:指向安装目录(就是bin的上一级目录)

4、设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,(%MAVEN_HOME%\bin代表的就是"E:\apache-maven-3.2.3\bin"目录)

5、验证Maven安装是否成功(打开cmd窗口,输入"mvn –v"命令 查看Maven的相关信息,)如图所示:能够出现这样的信息就说明Maven的安装已经成功了。

4.1Maven项目的目录约定

MavenProjectRoot(项目根目录)
   |----src
   |     |----main
   |     |        |----java ——
存放项目的.java文件
   |     |        |----resources ——
存放项目资源文件,如spring, hibernate配置文件
   |     |----test
   |     |        |----java ——
存放所有测试.java文件,如JUnit测试类
   |     |        |----resources ——
存放项目资源文件,如spring, hibernate配置文件
   |----target ——
项目输出位置
   |----pom.xml ----
用于标识该项目是一个Maven项目

4.2、手动创建Maven项目,使用Maven编译

1、创建项目根文件夹,例如MavenTest

2、在MavenTest文件夹中创建“pom.xml”文件,pom.xml文件中的内容如下:

<?xmlversion="1.0" encoding="UTF-8"?>

<projectxmlns="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">

    <!--所有的Maven项目都必须配置这四个配置项-->

   <modelVersion>4.0.0</modelVersion>

    <!--groupId指的是项目名的项目组,默认就是包名-->

   <groupId>cn.uplooking.maven</groupId>

    <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->

   <artifactId>maventest</artifactId>

    <!--version指的是版本,这里使用的是Maven的快照版本-->

   <version>SNAPSHOT-0.0.1</version>

</project>

3.编写Java类文件,Maven项目规定,所有的*.java文件必须放在src目录下的main目录下的java目录中,在Maven01项目根目录中创建一个src目录,然后在src目录中创建main目录,在main目录中再创建java文件夹,在java文件夹下创建一个HelloWorld.java文件。

     

4.使用Maven编译HelloWorld.java,首先进入到项目根目录(                          ),然后使用命令mvn compile进行编译

在最后看到上图结果,表示成功。使用Maven编译完成之后,在项目根目录下会生成一个target文件夹,如下图所示:

打开target文件夹,可以看到里面有一个classes文件夹,classes文件夹存放的就是编译成功后生成的.class文件,如下图所示:

5.使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉,执行完"mvn clean"命令后,target文件夹就会被删除了。

五、修改从Maven中心仓库下载到本地的jar包的默认存储位置

  从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home}表示当前登录系统的用户目录("C:\Users\Administrator"),如下图所示

Jar包存放在这个位置不太好,我们希望能够自己定义下载下来的jar包的存放位置,因此我们可以自己设置下载到本地时的jar包的存放目录。在“E:\”目录下创建一个“repository”文件夹,找到apache-maven-3.2.3\conf目录下的settings.xml文件,编辑setting.xml文件:

在上面注释代码下,添加代码<localRepository>E:/repository</localRepository>

这样就可以把jar包下载到我们指定的E:/repository目录中了, 把jar包下载到本地的好处就是,当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载。第一次执行"mvn compile""mvn clean"这两个命令时,Maven会去中央仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库中存储,所以就可以直接拿来用了,这样就省去了去中央仓库下载jar包的时间。

六.使用Maven

1.1、使用Maven编译、清理、测试、打包项目

1、使用Maven编译项目,编译项目的命令是:"mvn compile"

打开cmd命令行,进入项目根目录执行"mvn compile"命令编译项目的java类,编译成功之后,可以看到项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,打开【target】文件夹,可以看到里面有一个【classes】文件夹,【classes】文件夹中存放的就是Maven我们编译好的java类,这就是使用Maven自动编译项目的过程。

2、使用Maven清理项目,清理项目的命令是:"mvn clean"

进入项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,

3、使用Maven测试项目,测试项目的命令是:"mvn test"

进入项目根目录执行"mvn test"命令测试项目,测试成功之后,可以看到项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹,打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹,也就是说,我们执行执行"mvn test"命令测试项目时,Maven先帮我们编译项目,然后再执行测试代码。

4、使用Maven打包项目,打包项目的命令是:"mvn package"

进入项目根目录执行"mvn package"命令打包项目,打包成功之后,可以看到项目的根目录下的【target】文件夹中多了一个MavenTest-0.0.1-SNAPSHOT.jar,这个MavenTest-0.0.1-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件,

5、使用Maven部署项目,部署项目的命令是:"mvn install"

进入项目根目录执行"mvn install"命令部署项目,部署成功之后,首先会在项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有MavenTest-0.0.1-SNAPSHOT.jar,这个MavenTest-0.0.1-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件,除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个MavenTest-0.0.1-SNAPSHOT.jar,所以Maven部署项目的过程,实际上就是把项目进行【清理】【编译】【测试】【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中,所以使用"mvninstall"命令,就把maven构建项目的【清理】【编译】【测试】【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多。

1.2、组合使用Maven的命令

maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:

先清理再编译:"mvn clean compile",还有的就是"mvn clean test""mvn clean package""mvn clean install",这些组合命令都比较常用。

七、构建Java项目

一、构建JavaWeb项目

1.1、创建JavaWeb项目

1、使用mvn archetype:generate命令,如下所示:

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

创建好的JavaWeb项目的目录结构如下:

创建好的JavaWeb项目中目前只有src/main/resources目录,因此还需要手动添加src/main/javasrc/test/javasrc/test/resources

  如下图所示:

接着我们就可以将创建好的JavaWeb导入Eclipse中进行开发了,如下图所示:

1.2、使用Maven打包发布Web项目

Maven帮我们创建的JavaWeb项目是一个空的项目,只有一个index.jsp页面,我们使用MavenWeb项目打包发布运行。

  在命令行切换到myWebApp目录,执行:mvnpackage,构建成功后,myWebApp目录目录下多了一个target目录,在这个目录下会打包成myWebApp目录.war,把这个war包拷贝到Tomcat的发布目录下就可以运行了。如下图所示:

打包成功,在myWebApp\target目录下生成了一个myWebApp.war文件,如下图所示:

myWebApp.war放到tomcat服务器中就可以运行了。

二、Maven创建项目的命令说明

mvn archetype:create或者mvn archetype:generate  固定写法

-DgroupId                       组织标识(包名)

-DartifactId                      项目名称

-DarchetypeArtifactId  指定ArchetypeIdmaven-archetype-quickstart,创建一个Java Projectmaven-archetype-webapp,创建一个Web Project

-DinteractiveMode                    是否使用交互模式

archetypemvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

·        maven-archetype-archetype

·        maven-archetype-j2ee-simple

·        maven-archetype-mojo

·        maven-archetype-portlet

·        maven-archetype-profiles(currently under development)

·        maven-archetype-quickstart

·        maven-archetype-simple (currentlyunder development)

·        maven-archetype-site

·        maven-archetype-site-simple

·        maven-archetype-webapp

  每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project

八、Maven坐标

1.1、什么是坐标?

  在平面几何中坐标(x,y)可以标识平面中唯一的一点。

1.2Maven坐标主要组成

·        groupId:组织标识(包名)

·        artifactId:项目名称

·        version:项目的当前版本

·        packaging:项目的打包方式,最为常见的jarwar两种

样例:

1.3Maven为什么使用坐标?

·        Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范。

·        拥有了统一规范,就可以把查找工作交给机器。

 

九、依赖管理

1.1、依赖配置

  依赖配置主要包含如下元素:

<!--添加依赖配置-->

   <dependencies>

       <!--项目要使用到junitjar包,所以在这里添加junitjar包的依赖-->

       <dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>4.9</version>

           <scope>test</scope>

       </dependency>

   </dependencies>

1.2、依赖范围

依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动

十、仓库管理

1.1Maven仓库

  用来统一存储所有Maven共享构建的位置就是仓库

1.2Maven仓库布局

  根据Maven坐标定义每个构建在仓库中唯一存储路径,大致为:groupId/artifactId/version/artifactId-version.packaging

1.3、仓库的分类

1.3.1、本地仓库

  每个用户只有一个本地仓库,默认是在~/.m2/repository/~代表的是用户目录

1.3.2、远程仓库

1、中央仓库:Maven默认的远程仓库,URL地址:http://search.maven.org/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值