第二章、Maven核心程序解压与配置
第一节、Maven核心程序解压与配置
1、Maven官网地址
Maven – Welcome to Apache Maven
2、解压Maven核心程序
1、conf/settings.xml是核心配置文件
3、指定本地仓库
1、在conf/settings.xml文件中配置
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.hom e}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!-- 配置Maven本地仓库
这个目录文件夹如果配置也会自动创建或手动创建
-->
<localRepository>d:\maven-repo</localRepository>
4、配置阿里云提供的镜像仓库
1、远程下载境外中央仓库,下好就可以放在本地仓库
2、使用阿里云的镜像,免费,快
1、配置方式
1、注释掉原有的例子(仓库提供的)
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror> -->
2、添加配置:将mirror标签替换为以下标签
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
5、配置Maven工程的基础jdk版本
<!-- 配置Maven的jdk版本 -->
<profile>
<id>jdk-8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>8</jdk>
</activation>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.compilerVersion>8</maven.compiler.compilerVersion>
</properties>
</profile>
第二节、配置环境变量
1、配置MAVEN_HOME

2、配置PATH变量

实验一:
1、Maven核心概念:坐标
1、向量说明
1、groupld:公司或组织的id
2、artifactld:一个项目或者是项目中的一个模块的id
3、version:版本号
4、这三个向量是Maven仓库中唯一定位jar包
2、三个向量的取值方式
1、groupld:公司或者组织域名的倒叙,通常也会加项目名
(1)例如:com.atguigu.maven
2、artifactld:模块的名称,将来作为Maven工程的工程名
3、version:没看的版本号
(1)SNAPSHOT:表示快版本,正在迭代,不稳定
(2) RELEASE:表示正式版本
(3)1.2.0:1是主版本,2是次版本,3是修订号
3、坐标和仓库jar包中的存储路径之间的对应关系

2、实验操作
1、创建目录作为后面操作的工作空间
1、例如:D:\maven-workspace\mspaceVideo
2、提醒
3、三个目录
4、maven核心程序:中军大帐
5、maven本地仓库:军营
6、本地工作空间:战场
3、在工作空间目录下打开命令行窗口
1、例子

4、使用命令生成Maven工程
1、运行命令:mvn archetype:generate命令
1、意思

2、输入命令
1、会下载很多相关文件啊

2、创建成功

3、文件目录

5、调整
1、将Maven默认生成工程,修改其中pom.xml配置
<!-- 依赖信息配置-->
<dependencies>
<dependency>
<!-- 通过坐标来依赖其他jar包-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- 依赖范围-->
<scope>test</scope>
</dependency>
</dependencies>
2、自动生成的App.java和AppTest.java可以删除
1、解读自动生成的pom.xml文件
<!-- 根标签,对当前工程进行配置、管理-->
<project xmlns="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">
<!--从Maven2开始,就固定是4.0.0 -->
<!-- 代表当前pom.xml所采用的标签结构-->
<modelVersion>4.0.0</modelVersion>
<!--指定Maven坐标信息 -->
<!-- 某个项目-->
<groupId>com.atguigu.maven</groupId>
<!-- 某个模块-->
<artifactId>pro01-maven-java</artifactId>
<!-- 当前模块版本-->
<version>1.0-SNAPSHOT</version>
<!-- 当前模块打包方式,默认jar包方式 java工程 可以为war 是web工程 -->
<!-- pom:用来管理其他工程的工程,父工程,子工程-->
<packaging>jar</packaging>
<name>pro01-maven-java</name>
<url>http://maven.apache.org</url>
<!-- 定义属性值-->
<properties>
<!-- 构建过程中使用的字符集-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依赖信息配置-->
<dependencies>
<dependency>
<!-- 通过坐标来依赖其他jar包,相当于导入需求的jar包-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- 依赖范围-->
<scope>test</scope>
</dependency>
</dependencies>
</project>
3、Maven核心概念:POM
1、含义
1、POM:项目对象模型,和javaweb中的dom类似,将字符等文字转化为对象
2、模型化思想
1、POM将工程抽象为一个模型
3、对应的配置文件
1、体现在pom.xml 中,就是Maven的核心文件,教如何配置
4、Maven核心概念:约定的目录结构
1、各个目录的作用

2、约定目录结构的意义
1、为了让构建过程尽可能自动化完成,所以用约定目录结构
3、约定大于配置
1、Maven没有采用配置的方式,而是基于约定
2、趋势:约定大于配置,配置大于编码
实验二、在Maven工程中编写代码
1、主体程序

1、例子
package com.atguigu.maven;
public class Calculator{
public int sum(int i,int j){
return i+j;
}
}
2、测试程序

1、例子
public class CalculatorTest{
@Test
public void testSum(){
//创建Calculator对象
Calculator cal = new Calculator();
//调用cal对象的方法,获取到程序运行实际的结果
int actualResult = cal.sum(3,5);
//声明一个变量,表示程序运行期待的结果
int expRes = 8;
//判断是否一致
assertEquals(expRes,actualResult);
}
}
实验三、执行Maven的构建命令
1、要求
1、构建Maven中的构建操作相关命令,必须进入pom.xml所在的目录。如果没有在pom.xml所在的目录运行Maven的构建命令,会出现以下错误
2、

2、清理操作
1、mvn clean
2、效果:删除target目录
3、编译操作
1、主程序编译:mvn compile
2、测试程序编译:mvn test-compile
3、主体程序编译结果存放的目录:target/classes
4、测试程序编译结果存放的目录:target/test-classes
4、测试操作
1、编译失败改!!!
5、打包命令
1、mvn package
2、java文件打jar包
6、安装操作
1、mvn install
1、安装的效果:将本地构建的jar包存入到Maven本地仓库,这个jar包在Maven的路径根据坐标生成
实验四:生成web工程
1、内容

2、操作
1、不能嵌套,一个java工程里创建一个web工程
2、执行一下命令
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4
3、生成的pom.xml
1、确定打包的方式是war包形成
<packaging>war</packaging>
4、生成的web工程的目录结构
1、内容

5、创建Servlet
1、在main目录下创建java目录
1、需要自己补充(在cmd中需要自己补充)
2、在java目录下创建Servlet类所在的目录

3、在包下创建Servlet类
1、内容
package.com.atguigu.maven;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
public class HelloServlet extends HttpServlet{
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
response.getWrite().write("Hello maven web");
}
}
4、在文本.xml文件中注册servlet
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.atguigu.maven.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
</web-app>
6、在index.jsp页面编写超链接
<html>
<body>
<h2>Hello World!</h2>
<a href='helloServlet'>Access Servlet</a>
</body>
</html>
1、这里使用的相对路径
7、编译
1、直接编译mvn compile会出错,因为没有对应的依赖jar包