一、 Maven简单介绍

Apache Maven是个项目管理和自动构建工具,基于项目对象模型(POM)的概念。
作用:完成项目的相关操作,如:编译,构建,单元测试,安装,网站生成和基于Maven部署项目。
xxx.class

百度—》 xxx.jar

在百度上进行下载

将xxx.jar导入工程中

私服

工程中的某一个xml文件中写入一个字符串,达到jar下载的作用

二、 什么是自动构建工具?

2.1 .java->.class->run
方式一
javac HelloWorld.java
java HelloWorld

方式二
开发工具Eclipse

三、 常用的自动构建工具

  1. ant
  2. maven
  3. Gradle android项目管理和构建已使用

四、 Maven安装与配置

4.1 下载maven安装包,解压即可使用
http:///download.cgi

4.2 配置maven环境变量

4.2.1 新建MAVEN_HOME,再选择解压后的所属路径,点击确定即可。

将模块标记为maven module_将模块标记为maven module


4.2.2 新建M2_HOME,与MAVEN_HOME相同。

将模块标记为maven module_maven_02


4.2.3 修改path添加maven相关路径

配置方式跟jdk有些类似,环境变量MAVEN_HOME和M2_HOME的值为maven的根目录、

然后在PATH环境变量里加入“%MAVEN_HOME%\bin;%M2_HOME%\bin;”点击确定即可。

将模块标记为maven module_maven_03


4.3 验证

doc窗口执行命令“mvn –version”

将模块标记为maven module_xml_04

4.4 修改“MAVEN_HOME\config”下的setting.xml文件,配置本地仓库。注意是:“E:/”而非“E:\”
例如:E:/mvn-repository
注1:标签在setting.xml文件的53行
注2:仓库的作用就是用来存放jar包的
注3:仓库的分类
中央仓库
公司仓库(也叫私人仓库或私服)
本地仓库

中央仓库(http://search.maven.org/,但一般使用另外一个网站:http://www.mvnrepository.com/)
       公司仓库
       本地仓库           
       公司里面还会有一个大仓库(本地)全公司使用
       本地仓库程序员自己使用,私服全公司使用,中央仓库所有人用

注4:jar的查找顺序:本地仓库->私服->中央仓库

注5:换源“阿里云”

如,我所修改的两处:

将模块标记为maven module_将模块标记为maven module_05


将模块标记为maven module_将模块标记为maven module_06

4.5 maven插件安装与配置

注1:eclipse4.0以上已经安装好了,无需额外配置

注2:设置maven安装路径

Installations

将模块标记为maven module_将模块标记为maven module_07


注3:指定setting.xml文件

User Settings

将模块标记为maven module_java_08


Maven用户可以选择配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml,前者是全局范围的,

整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。

推荐使用用户范围的setting.xml,主要是为了避免无意识地影响到系统中的其他用户,

而且为了以后maven升级的方便,直接把配置文件从仓库拷过去就可以了。

五、maven项目搭建

选择好maven项目后,点击next

将模块标记为maven module_xml_09


一定要选择internal,如果不选择的话,哪怕你配了maven静项,它依然从中央控制器下jar包,那么所消耗的时间较长。

将模块标记为maven module_java_10


1、pom.xml

将模块标记为maven module_maven_11

<project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http:///POM/4.0.0 http:///maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xieminglu</groupId>
  <artifactId>maven</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>maven Maven Webapp</name>
  <url>http://</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
   </dependency>
    
  </dependencies>
  <build>
    <finalName>maven</finalName>
    <plugins>
            <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
    
    </plugins>
  </build>
</project>

2、修改Project Facets

将模块标记为maven module_将模块标记为maven module_12

3、点击webapp,打开web.xml

将模块标记为maven module_将模块标记为maven module_13

4、添加的配置archetypeCatalog=internal可加快项目创建速度
archetypeCatalog用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置:
internal——maven-archetype-plugin内置的
local——本地的,位置为~/.m2/archetype-catalog.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
</web-app>

5、代码演示

package com.xieminglu.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/maven")
public class MavenServlet extends HttpServlet{

	private static final long serialVersionUID = 2866179721038535862L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("maven环境搭建完毕");
	}
}

将模块标记为maven module_xml_14