java基础-构建工具mvn-day20
1. 初识mvn

mvn是一个项目构建工具 idea里面内置ant,已经基本被maven取代
官网:https://maven.apacher.org
核心文件pom.xml project object model
面向的是项目
idea内置mvn的位置
D:\02-soft_setup\01-idea\ideaIU-2019.2.3.win\plugins\maven\lib\maven3
将conf里面的setting 复制到user/.m2目录

setting/build_tools/maven

初次使用maven user/.m2目录不存在的解决

如何解决

环境变量PATH添加 maven的bin目录
cmd 输入
mvn help:system
注:可能运行较慢 可以等配置完镜像源 在运行 会快很多

什么是仓库


每个jar包都有唯一的坐标
远程仓:
中央仓默认是apache提供
访问一下中央仓
mavenreposity.com -->mybatis

私服仓库--本地局域网 公司内部搭建的仓库
本地仓库 --用户缓存远程下载的jar
如何配置本地仓

什么是镜像仓库?

远程的apache仓库 用国内的镜像代替 例如 aliyun镜像仓
如何配置 国内的镜像仓
mirrors标签添加
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

maven关于jdk的配置
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
检查一下 是否完成以下配置

mvn工程的类型

2. 用maven创建工程
new project 不勾选模板

这三个参数其实就是maven里面的坐标
GroupId AtriFactId Version


初次创建的工程会下载jar包

创建好的工程:

各个文件夹的作用

idea右边的maven插件 双击 install

在本地仓respority目录里面查看是否有jar包打出



3. maven工程 之间的关系
依赖 继承 聚合

依赖关系 以如何 注入依赖?

pom.xml中增加坐标 自动依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
</dependencies>

不同的版本 自动解决jar包冲突

依赖的传递

将demo工程
clean -- install 重新打jar包
创建项目2

将demo1的坐标直接复制到demo2的dependency
<groupId>com.msb</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
点击自动导入

demo1 已经mybatis自动的依赖 添加

依赖的两个原则
最短路径原则 最先声明原则

如何排除掉demo1里面的mybatis
<dependencies>
<dependency>
<groupId>com.msb</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

mybatis自动消失
依赖的范围:
compile provied runtime system

MavenDemo2是MavenDemo工程的子工程 如何关联
<parent>
<groupId>com.msb</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../MavenDemo</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies>
4. 父子 mvn工程
父工程
<?xml version="1.0" encoding="UTF-8"?>
<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>
<!--定义为pom项目-->
<packaging>pom</packaging>
<groupId>com.msb</groupId>
<artifactId>ParentDemoProject</artifactId>
<version>1.0-SNAPSHOT</version>
<!--版本定义-->
<properties>
<mybatis.version>3.5.4</mybatis.version>
<spring-core.version>5.1.11.RELAESE</spring-core.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-core.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-core.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
ChildProj自动增加dependency

5. mvn常见的插件
编译器
修改项目的pom.xml 不同的子项目 用的JDK版本不一样 这个场景很少见

资源拷贝
只有放在src/main/resource下面的文件
打包后才会在target/class下面放着

如何把非resource 也打包到classes目录中

6. tomcat插件
new project MavenWarDemo01


点击自动导入
配置tomcat插件
注意不要放错了位置

<plugin>
<!--tomcat插件-->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
启动:

浏览器访问:http://localhost:8080/index.jsp

maven 命令 clean与package的区别

java基础-构建工具mvn-day20的更多相关文章
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- JAVA基础——Arrays工具类十大常用方法
Arrays工具类十大常用方法 原文链接:http://blog.csdn.net/renfufei/article/details/16829457 0. 声明数组 String[] aArray ...
- java 基础 ----- Arrays 工具类
----- Arrays 工具类是一个比较方便的类 常用的方法 也可以通过jdk文档进行查看 右侧有偶 对一些比较常用的方法进行演示 直接放在main方法中进行测试 ---- equ ...
- java项目构建工具Maven
一.java-maven常用命令 mvn archetype:create 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编 ...
- Java基础-常用工具类(二)
Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 通过 Scanner 类的 next() 与 nextLine() ...
- Java基础-常用工具类(一)
object类 Object 类是所有类的的父类,如果一个类没有明确使用EXPENTS关键字明确标识继承另外一个类,那么这个类默认继承object类,oject类中的方法适合所有子类 1)toStri ...
- java基础之 工具类
一.StringUtils StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true String ...
- java基础-开发工具IDEA
常用快捷键 查找 查找:Ctrl + F Find In Path: Ctrl + F + Shift (比普通查找多了一个shift) Search EveryWhere : 双击Shift 视图 ...
- Java项目工程化之项目构建工具Maven
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- Java构建工具Ant小记(一)
Ant简介 Ant是基于java的构建工具.理论上来说它类似与make工具,但是却克服了make的一些固有的缺陷. 传统的Make是基于操作系统shell的构建工具,虽然也可以基于工作的os对make ...
随机推荐
- Tampermonkey 编写一个首页跳转的脚本
每次打开浏览器时,总是会跳到一个其他的网页上,关也关不掉,很烦,写一个脚本直接跳转 // ==UserScript== // @name 页面跳转 // @version 1.0.1 // @auth ...
- Java8新特性Optional
Optional类的方法 1.empty private static void createNullOptional() { // 创建一个空的Optional实例 // 方式一 Optional& ...
- Find a Number (记忆化+BFS)
题目来自"2018-2019 ICPC, NEERC, Southern Subregional Contest",codeforces上放置了此题:Find a Number 题 ...
- LeetCode15:三数之和(双指针)
解题思路:常规解法很容易想到O(n^3)的解法,但是,n最大为1000,很显然会超时. 如何优化到O(n^2),a+b+c =0,我们只需要判断 a+b的相反数是否在数组中出现,而且元素的取值范围在 ...
- 牛客小白月赛2 F题黑黑白白 (博弈或dfs)
题目链接:https://www.nowcoder.com/acm/contest/86/F 解题思路:赛后看博客都说是sg函数.emmm,后面看了别人代码dfs也可以,只要找到一条能赢的路就可以. ...
- Javascript面向对象的程序设计 —— 创建自定义类型的7种方法
Object构造函数或对象字面量都可以用来创建单个对象,但是使用这些方式用同一个接口创建很多对象,会产生大量的重复代码.为了解决这个问题,工厂模式的一种变体开始被使用.1.工厂模式工厂模式抽象了创建具 ...
- 某RBAC管理系统审计
某RBAC管理系统审计 前言 这个管理系统的审计我去年就开始了但烂尾了,那时候太热闹了log4j2,cs的cve反制等等.这个都给忘了,所以本篇可能有些图有点老,现在就是旧图没一个个换遇到的新的就加上 ...
- 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程
最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注. step 1 首先 ...
- DataX快速入门
DataX3.0快速入门 一.DataX3.0概览 DataX是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内部被广泛使用的离线数据同步工具/平台.解决了数据库之中的数据同步.迁移问题, ...
- LiteOS:剖析时间管理模块源代码
摘要:Huawei LiteOS的时间管理模块以系统时钟为基础,分为2部分,一部分是SysTick中断,为任务调度提供必要的时钟节拍:另外一部分是,给应用程序提供所有和时间有关的服务,如时间转换.统计 ...