Maven

一.Maven 介绍

1.maven 是什么?
maven翻译为“专家、内行”,Maven是Apache下的一个纯java开发的开源项目,是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用maven的的项目在持续增长。

2.什么是项目构建?
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。

2.1 传统项目构建
图片

2.2 maven项目构建过程
图片

3.maven工程构建的有点
1.一个命令完成构建、运行,方便快捷
2.maven对每个构建阶段进行规范,非常有利于大型团队协作开发

4.什么是依赖管理
什么是依赖?一个java项目可能要使用一些第三方jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包
依赖管理就是对项目所有以来的jar包进行规范化管理。

4.1传统项目的依赖管理
图片

4.2 maven项目的依赖管理
maven项目管理所依赖的jar包,不需要手动向工程添加jar包,只要在pom.xml(maven工程配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:
图片

使用maven依赖管理添加jar的好处:
1.通过pom.xml文件对jar包的版本进行统一的管理,可避免版本冲突。
2.maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库中下载jar包,非常方便。

5.使用maven的好处
图片

二. Maven安装

1,下载安装
从该网站http://maven.apache.org/download/cgi下载maven3.3.9版本

2.解压到一个不含中文和空格的目录中
bin目录:
boot目录:
conf目录:
lib目录:

3.环境变量配置:
电脑上需安装java环境,安装jdk1.7+版本(path中配置有JAVA_HOME/bin)
配置MAVEN_HOME
变量名:MAVEN_HOME
变量值:maven解压目录

将%MAVEN_HOME%/bin 加到环境变量path

进入命令行窗口,mvn -v查看是否成功

4.maven仓库的作用

5.配置本地仓库
在MAVEN_HOME/conf/settings.xml文件中配置本地仓库位置
举例:

<localRepository>D:/repository</localRepository>

也可以修改本地仓库的位置
图片

6.maven项目工程目录约定
图片

进入到某个项目的POM文件所在目录下。
7.常用的maven命令
mvn clean
mvn compile
mvn package
mvn install

编写以上命令时最好将myEclipse关闭,特别是clean命令。

项目构建

1.eclipse与maven
命令行方式使用maven效率不高,可以在开发工具中集成maven软件,如eclipse2014已集成maven

2.eclpse中maven插件
2014版本不用单独安装,可以创建maven项目 表示maven插件已经存在

3.指定maven安装目录
有些开发工具版本集成了maven,可以不适用eclipse内置版本,使用maven3.3.9
这里写图片描述

这里写图片描述

注意:如果修改了setting.xml文件,需要点击上图中的update settings 按钮
对本地仓库进行重建索引,点击redix

4.eclipse浏览仓库
maven配置完成需要测试在eclipse中是否可以浏览maven的本地仓库,如果可以正常浏览maven本地仓库则说明eclipse集成maven已经完成
打开eclipse仓库视图,对插件和jar包创立索引
这里写图片描述

这里写图片描述

5.定义maven坐标
每个maven工程都需要定义本工程的坐标,坐标是maven对jar包的身份定义,
举例:某maven工程的坐标定义为:

<!--项目名称:组织名+项目名  类似包名-->  
  <groupId>com.bigdata</groupId>
<!--模块名称-->
  <artifactId>hello</artifactId>
<!--当前版本号 SNAPSHOT 为快照,即非正式版本,Release 为正式版本-->
  <version>0.0.1-SNAPSHOT</version>
<!--打包方式  三种   一般java项目打包为jar,web项目打包为war,pom方式用于maven工程的继承,通常父工程设置为pom -->
  <packaging>war</packaging>

6.创建maven工程
6.1 新建maven工程
这里写图片描述

这里写图片描述

这里写图片描述

6.2定义坐标
这里写图片描述

6.3设置编译版本
maven工程默认编译版本是1.5 可以设置插件来配置编译版本,如设置为1.7
在pom.xml中加入:

 <build>
        <!-- 配置了很多插件 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>  
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

6.4 定义web.xml
在src/webapp中添加WEB-INF/web.xml文件,内容为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

</web-app>

6.5 编写servlet

/**
 * Servlet implementation class HelloServlet
 */
public class HelloServlet extends HttpServlet {

    public HelloServlet() {
        // TODO Auto-generated constructor stub
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

6.6 编写jsp
这里写图片描述

这里写图片描述

6.7 添加servlet/jsp的jar包
这里写图片描述

<!-- 添加servlet-api,jsp-api -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

6.7 配置servlet
6.9运行
cmd命令进入工程目录,运行tomcat:run命令,如果是tomat7,则为tomcat7:run 命令
这里写图片描述

这里写图片描述

依赖管理

maven依赖关系中Scope的作用 
Dependency Scope 
在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值: 

    * compile,缺省值,适用于所有阶段,会随着项目一起发布。 
    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
    * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值