Maven 基础知识

官网: 传送门

Maven 项目结构

$ MavenProject
|-- pom.xml
|-- src
|   |-- main
|   |   `-- java
|   |   `-- resources
|   `-- test
|   |   `-- java
|   |   `-- resources
`-- README.md

POM文件

  • POM文件代表 工程对象模型(Project Object Model)它是使用Maven工作的基本组件,位于工程根目录。
  • POM文件支持继承
<?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><packaging>pom</packaging><modules><module>mscx-ad-discovery</module><module>mscx-ad-zuul</module><module>mscx-ad-gateway</module><module>mscx-ad-discovery-nacos</module><module>mscx-ad-common</module><module>mscx-ad-db</module><module>mscx-ad-sponsor</module><module>mscx-ad-search</module><module>mscx-ad-feign-sdk</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sxzhongf</groupId><artifactId>mscx-ad</artifactId><version>1.0-SNAPSHOT</version><name>分布式广告系统</name><description>基于Spring Cloud Alibaba 实现的分布式广告系统</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR2</spring-cloud.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!--定义远程maven仓库--><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>alibaba</id><name>ali Milestones</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><snapshots><enabled>false</enabled></snapshots></repository></repositories><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Maven 坐标

Maven Dependency

Maven思想 是 约定大于配置,默认依赖中,scope 是compile.

Scope类型

  • compile(会被打包到当前project)

    表示被依赖的package参与当前project的编译,包含后续的测试,运行周期都会参与,是一个强依赖。

  • test

    表示被依赖的jar 仅参与测试相关的处理,包裹测试代码的编译,执行。(如junit)

  • runtime

    表示被依赖的jar不需要参与项目的编译,但是后期的测试和运行周期需要参与。

  • provided

    打包的时候不需要包含进去,其他的Container会提供该依赖支持,理论上该依赖可以参与编译、测试运行等周期 ,相当于compile,但是在打包阶段做了exclude命令。

  • system

    从参与环境来看,和provided相同,但是被依赖项不会从maven仓库获取,而是从本地文件系统获取,一定需要配合systemPath属性使用

  • import

    This scope is only supported on a dependency of type pom in the <dependencyManagement> section.

依赖传递特性

官方解释:传送门

  • Dependency mediation (最近依赖原则)

    "nearest definition" means that the version used will be the closest one to your project in the tree of dependencies. For example, if dependencies for A, B, and C are defined as A -> B -> C -> D 2.0 and A -> E -> D 1.0, then D 1.0 will be used when building A because the path from A to D through E is shorter. You could explicitly add a dependency to D 2.0 in A to force the use of D 2.0.

    根据依赖深度,选择依赖路径最近的package version, 如果依赖深度相同,那么选择前一个。Note that if two dependency versions are at the same depth in the dependency tree, the first declaration wins.

  • Dependency management

    依赖管理(项目作者可直接指定依赖版本)

  • Dependency scope 如上一节所述

  • Excluded dependencies 排除依赖包中依赖项

  • Optional dependencies (相当于设置不允许将该依赖传递下去)

常用命令

转载于:https://www.cnblogs.com/zhangpan1244/p/11233939.html

使用maven快速入门相关推荐

  1. Maven快速入门(IDEA版) - 尚硅谷

    尚硅谷的Maven课程,自己学习时记录的笔记 b站视频:Maven零基础入门教程 文章目录 一.概述 (一) 为什么需要Maven 1. 目前的技术 2. 开发中存在的问题 (二) 什么是Maven? ...

  2. Maven入门指南① :Maven 快速入门及简单使用

    原文链接:http://www.cnblogs.com/luotaoyeah/archive/2014/06/02/3764533.html 开发环境 MyEclipse 2014 JDK 1.8 M ...

  3. maven快速入门番外篇——Eclipse下载GitHub上FastDFS-Client客户端源码并转化成maven工程以及打包到本地maven仓库

    由于fastdfs-client的jar包目前在中央仓库是没有坐标的,而在项目中要想实现文件的上传和下载就得使用到它,这不禁就让我们头疼,所以为了解决这个问题,我写下了这篇文章,希望对读者能有所帮助. ...

  4. Spring MVC 4快速入门Maven原型已改进

    Spring Boot使Spring入门非常容易. 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣. 几年前,我创建了一个原型(早于Spring Boot),简化了引导S ...

  5. Shiro第一个程序:官方快速入门程序Qucickstart详解教程

    目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...

  6. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  7. springcloud项目打包_SpringCloud 快速入门

    前言 最近入职了新公司,主要负责Java后端开发工作.目前正在开展一个全新的业务,技术选型为SpringCloud全家桶,项目的骨架由我负责搭建.由于前几家公司的微服务框架都是使用Dubbo + Sp ...

  8. Spring Boot 2.x基础教程:快速入门

    点击蓝色"程序猿DD"关注我哟 来源:http://t./ <Star最多的Spring Boot教程继续更新了> 牛皮吹过了! Git仓库和博客专题页也改版完成! 是 ...

  9. 【转】Spring Boot快速入门

    为什么80%的码农都做不了架构师?>>>    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复 ...

最新文章

  1. 替代反射调用的几种方式及性能测试
  2. python pip install指定国内源镜像
  3. printf 指针地址_指针搞都不懂,好意思说自己会C语言?
  4. 锦官城思享会-成都创业与商业CXO闭门会圆满举办
  5. java面试 设计模式_Java面试中常问到的设计模式
  6. python无限循环语句的代码_如何在Python中实现非阻塞无限循环
  7. python基础数据类型语法
  8. 零基础学sql要多久_零基础如何学习游戏3D建模,要学些什么内容?学多久?
  9. 清华大学计算机系高考选科要求,清华大学新高考选课要求-清华大学新高考选考科目...
  10. 薪酬管理系统功能描述文档
  11. 00后大学生在数学真理阳光下学习微积分
  12. 斐波那契螺旋线系列一:斐波那契数列介绍
  13. 【机器学习】简单理解精确度(precision)和准确率(accuracy)的区别
  14. 一元线性回归与多元线性回归
  15. JSP标准标签库——JSTL
  16. qq在线模板html,qq错误模板sogoupy.ime
  17. javaMail发送邮件读取流中的数据并作为作为附件发送邮件
  18. 【ML4CO论文精读】具有离散拆分送货和取货的车辆路径问题的禁忌搜索算法(Meng Qiu, 2018)
  19. 微信美食菜谱小程序系统毕业设计毕设(7)中期检查报告
  20. NeurlPS‘22 推荐系统论文梳理

热门文章

  1. Facebook合并WhatsApp和Instagram?德国:展开反垄断调查!
  2. asp.net mvc使用mysql_如何使用MySQL设置ASP.NET MVC 2?
  3. 实用的无锁队列(二)
  4. 龙卷风路径_龙卷风突袭洛阳镇天井村 50多亩桃园遭了殃
  5. iphone保修期多久_秒杀!仅9.9元起换iphone原厂电池!完美解决手机耗电快!
  6. onvif学习笔记10:获取RTSP流地址
  7. Jsoup获取动态js生成的内容
  8. eclipse启动web项目时,spring会初始化两次
  9. 北斗轨迹记录_跑步GPS轨迹经常“飘”?要是用咱们的北斗,会好吗...
  10. 95-36-200-ChannelHandler-系统Channel-LoggingHandler