07.尚硅谷_Maven_部署Maven核心程序.avi

第一步先安装jdk

第二步下载maven

特别需要注意的是maven不能存储在有中文和空格的目录下面

3.调试是否安装成功,在cmd中输入 mvn -version

08.尚硅谷_Maven_约定的目录结构说明.avi

3.第一个Maven工程
①目录结构
Hello
|---src
|---|---main
|---|---|---java
|---|---|---resources
|---|---test
|---|---|---java
|---|---|---resources
|---pom.xml

②POM文件内容
<?xml version="1.0" ?>
<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">
<modelVersion>4.0.0</modelVersion>

<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>

<name>Hello</name>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
③编写主程序代码
在src/main/java/com/atguigu/maven目录下新建文件Hello.java,内容如下
package com.atguigu.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
④编写测试代码
在/src/test/java/com/atguigu/maven目录下新建测试文件HelloTest.java
package com.atguigu.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
@Test
public void testHello(){
Hello hello = new Hello();
String results = hello.sayHello("litingwei");
assertEquals("Hello litingwei!",results);
}
}
⑤运行几个基本的Maven命令
mvn compile 编译
mvn clean 清理
mvn test 测试
mvn package 打包
※注意:运行Maven命令时一定要进入pom.xml文件所在的目录!

目录如下

我们进入到pom.xml所在的目录执行上面的命令

当前例如是adminstrator用户

maven默认的本地仓库的位置是:

在d盘的D:\RepMaven文件夹中我们下载好了maven所需的jar包,我们可以修改maven本地仓库的地址执行该目录

我们找到maven解压目录下的conf文件夹下面的setting.xml修改如下

Maven是当前流行的项目管理工具,但官方的库在国外经常连不上,连上也下载速度很慢。国内oschina的maven服务器很早之前就关了。今天发现阿里云的一个中央仓库,亲测可用。

修改settings.xml文件,在<mirrors>标签下加入上述内容即可

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

12.尚硅谷_Maven_POM.avi

接下来我们来学习maven的依赖,我们创建一个maven工程,依赖我们的上面第一个Hello这个工程,要依赖Hello工程,我们要使用maven install命令,将Hello这个工程添加到本次仓库中

4.第二个Maven工程
①工程名:HelloFriend
②目录结构与第一个Maven工程相同
③POM文件

<?xml version="1.0" ?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloFriend</name> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency> </dependencies>
</project>

④主程序:在src/main/java/com/atguigu/maven目录下新建文件HelloFriend.java
package com.atguigu.maven;
import com.atguigu.maven.Hello;
public class HelloFriend {
public String sayHelloToFriend(String name){
Hello hello = new Hello();
String str = hello.sayHello(name)+" I am "+this.getMyName();
System.out.println(str);
return str;
}
public String getMyName(){
return "John";
}
}
⑤测试程序:在/src/test/java/com/atguigu/maven目录下新建测试文件HelloFriendTest.java
package com.atguigu.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import com.atguigu.maven.Hello;

public class HelloFriendTest {
@Test
public void testHelloFriend(){
HelloFriend helloFriend = new HelloFriend();
String results = helloFriend.sayHelloToFriend("litingwei");
assertEquals("Hello litingwei! I am John",results);
}
}

在上面的HelloFriend中

<scope>test</scope> 依赖的junit对应的范围是测试程序才有效果,对主程序没有效果,test表示测试范围内的依赖

<scope>compile</scope>依赖的Hello jar包在主程序中可以使用,在测试test模块中也可以使用,都可以直接new Hello对象,complie表示测试范围和主程序都要有效

例如如果使用compile依赖spring的jar,该spring的jar就会被打包在应用中,并且因为tomcat容器没有提供该spring的jar包,就会被部署到容器中,compile指定的jar包在主程序和测试程序都有效,会随项目发布

例如如果使用test依赖junit的jar,compile指定的jar包只能在测试程序中有效,不会部署不会打包在应用中,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

对应privodie修饰的jar包,在主程序和测试程序都有效,privide默认tomcat容器会提供该jar包,所以不会被打包也不会被部署到应用服务器中,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

接下来,我们讲解如何在myeclipse上面新建使用maven建立web工程

第一步

将第一个选项enable Maven4MyEclipse 这个选择上

第二步新建立一个web工程

这里把add maven sporrt勾选上。如果没有第一步的操作,这里就没有add maven support这个选项

接下来填写你的maven坐标。勾选stander这个选项

这里上默认不勾选

我们来看看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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.weiyuan.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>MavenWeb</name>
<description/>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<version>3.0</version>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>

在上面创建的文件夹中index.jsp有红叉,是因为缺少sevlet这个依赖

我们在pom.xml中添加servlet的依赖

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.weiyuan.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>MavenWeb</name>
<description/>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<version>3.0</version>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
这样index.jsp就不会出现错误了,千万要注意scope是provide,如果写成compile ,该jar就会部署到tomcat中,tomcat容易中也存在该servlet jar,就会存在jar的冲突
接下来还有两个地方需要配置的
 

上面install要选择我们解压在本地的maven按照目录

user setting选择我们本地maven解压下的conf.xml

上面这两个配置在myeclipse工作区间发生变化的时候都需要重新配置

接下面我们讲解如何导入maven工程

选择maven工程所在的目录,导入就可以了

接下来我们讲解下maven的依赖性

我们在上面创建了两个maven项目。hello 和hellofreind

hellofriend依赖hello,hello已经使用mvn install 安装到了本地的仓库中

下面在我们在hello中添加了一个spring的依赖

在hellofreiend中会自动加载hello中引入的依赖,这就是依赖的传递性,hello直接依赖spring ,hellofriend间接依赖spring

上面的hello就是所谓的最下面,但是主要非compile范围的不能被传递

接下面我们讲解下依赖的排除

上面hello中存在log的jar包,会自动的传递到HelloFriend中,但是如果helloFreien中不想需要这个log依赖如何处理了,在hellofriend的pom.xml中

接下来我们分析下maven依赖的原则

makefreind依赖hellofriend ,hellofrien依赖hello

hello中使用了log4j 1.2.17版本,hellofrien中使用了1.2.104版本,按照上面依赖的传递性,makefriend就会存在1.2.17和1.2.14版本,这里时候使用哪个版本了,安装就近原则,makefriend依赖hellofreind比较近,相当于hellofriend是makefreind的爸爸,hello是她的也爷爷

隔爸爸比较近,就使用爸爸中的

接下面我们看第二个场景

makefreind有两个爸爸

这个时候如何选择了,这个时候就看那个先使用depency声明就使用那个,在makefrien的pom,xml中那个先声明就使用那个

接下来我们讲解proprert标签在maven中的使用

我们在pom.xml中依赖了很多jar包,都是4.0.0版本的,我们需要在下次运行的时候统一升级成4.1.0版本,就可以使用propetiies

接下面我们讲解下maven的继承,要实现junit因为junt是test范围的,每个项目使用都要自己配置,下面可以使用父工程来解决这个问题

第一步先创建一个父亲工程

这里是最关键的对于父亲工程,对于的打包方式一定要选择为pom方式,如果是java工程选择jar,web工程选择war

这就是父亲工程的目录结构

接下来,在子工程中声明对父亲工程的引用

我们在hello子工程的pom.xml中引用付工程

<?xml version="1.0" ?>
<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">
<modelVersion>4.0.0</modelVersion> <artifactId>Hello</artifactId> <!-- 子工程中声明父工程 -->
<parent>

<groupId>com.weiyuan.test</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>


        <!-- 以当前文件为基准的父工程pom.xml文件的相对路径 -->
<relativePath>../Parent/pom.xml</relativePath>
</parent> <properties>
<atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <name>Hello</name> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${atguigu.spring.version}</version>
<scope>compile</scope>
</dependency>
<!-- <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId>
<version>1.2.17</version> </dependency> --> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${atguigu.spring.version}</version>
</dependency> </dependencies>
</project>

上面引用的是父工程的坐标,其中 <relativePath>../Parent/pom.xml</relativePath>表示一当前hello的pom.xml为坐标寻找父亲工程的pom.xml对应的位置,首先后退到上一节目录就是Hello目录,parent目录和Hello在同一级目录

接下来在父工程中配置需要被管理的对象,例如junt

<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.weiyuan.test</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <!-- 配置版本统一管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build/>
</project>
接下来在子工程中对应的junit配置删除就可以了。
 

接下来我们讲讲聚合的概念

上面有了继承之后。我们使用make install 安装的时候,都是先安装父工程,然后再安装子工程,能不能一键安装所以的工程了,这就是聚合的概念,我们可以在父工程的pom.xml文件中进行配置

尚硅谷maven视频教程笔记的更多相关文章

  1. 尚硅谷spring_boot课堂笔记

    尚硅谷spring_boot课堂笔记

  2. 尚硅谷Java高级笔记

    尚硅谷Java高级笔记 idea的使用: 一些小区别: 其他细节参考idea配置pdf 多线程: 基本概念: 多线程的优点: 何时需要多线程: 线程的创建和使用: 创建多线程的第一种方式: /** * ...

  3. 保姆级尚硅谷SpringCloud学习笔记(更新中)

    目录 前言 正文内容 001_课程说明 002_零基础微服务架构理论入门 微服务优缺点[^1] SpringCloud与微服务的关系 SpringCloud技术栈 003_第二季Boot和Cloud版 ...

  4. 尚硅谷ajax视频教程2

    7.7. 尚硅谷_佟刚_Ajax_典型应用_验证用户名是否可用 整个项目的目录路径如下所示 我们首先新建立一个web工程,在webroot下面新建立一个script的文件夹,导入jquer文件 接下来 ...

  5. 尚硅谷ajax视频教程1

    1.+尚硅谷_佟刚_Ajax_概述.wmv 2.+尚硅谷_佟刚_Ajax_使用+XMLHttpRequest+实现+Ajax.wmv XMLHttpRequest 对象提供了对 HTTP 协议的完全的 ...

  6. 尚硅谷-Maven笔记

  7. 尚硅谷Java视频教程导航(学习路线图)

    最近很火,上去看了看,对于入门的人还是有点作用的,做个记号,留着以后学习. Java视频教程下载导航(学习路线图) 网站地址:http://www.atguigu.com/download.shtml

  8. 2018年尚硅谷《全套Java、Android、HTML5前端视频》

    全套整合一个盘里:链接:https://pan.baidu.com/s/1nwnrWOp 密码:h4bw 如果分类里没有请下载下边那些小项教程链接 感谢尚硅谷提供的视频教程:http://www.at ...

  9. 尚硅谷《全套Java、Android、HTML5前端视频》

    尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...

随机推荐

  1. XMLHttpRequest实现Ajax &数据格式JSON

    GET请求 index <%@ page language="java" contentType="text/html; charset=utf-8" p ...

  2. SpringBoot—单元测试模板(controller层和service层)

    介绍 概述   在开发过程中,我们经常会一股脑的写各种业务逻辑,经常等全部大功告成的时候,打个jar包放环境里跑跑看看能不能通,殊不知在各个业务方法中已经漏洞百出,修复一个打一个包,再继续修复,这种效 ...

  3. 从0开始探究vue-公共变量的管理

    背景 在Vue项目中,我们总会遇到一些公共数据的处理,如方法拦截,全局变量等,本文旨在解决这些问题 解决方案 事件总线 所谓事件总线,就是在当前的Vue实例之外,再创建一个Vue实例来专门进行变量传递 ...

  4. Java实现 蓝桥杯 算法训练 My Bad(暴力)

    试题 算法训练 My Bad 问题描述 一个逻辑电路将其输入通过不同的门映射到输出,在电路中没有回路.输入和输出是一个逻辑值的有序集合,逻辑值被表示为1和0.我们所考虑的电路由与门(and gate, ...

  5. Java实现 LeetCode 529 扫雷游戏(DFS)

    529. 扫雷游戏 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵. 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相邻(上,下,左,右,和所有4个对角线) ...

  6. Java实现 LeetCode 313 超级丑数

    313. 超级丑数 编写一段程序来查找第 n 个超级丑数. 超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数. 示例: 输入: n = 12, primes = [2,7, ...

  7. Java实现判断单联通(强连通缩点+拓扑排序)Going from u to v or from v to u

    Description In order to make their sons brave, Jiajia and Wind take them to a big cave. The cave has ...

  8. Java实现第十届蓝桥杯人物相关性分析

    试题 H: 人物相关性分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明正在分析一本小说中的人物相关性.他想知道在小说中 Alice 和 Bob 有多少次同 ...

  9. ant构建Jmeter脚本的build文件配置(build.xml)

    使用此构建文件可自动发送邮件  代码如下: <?xml version="1.0" encoding="UTF8"?> <project na ...

  10. CUDA优化

    cuda程序优化 一:程序优化概述 1:精度 在关键步骤使用双精度,其他步骤使用单精度,以获得指令吞吐量和精度的平衡. 2:延迟 先缓冲一定量数据,在交给GPU计算.可以获得较高的数据吞吐量. 3:计 ...