本文为博主原创,未经允许不得转载

 目录:

  1. maven 依赖属性:groupId、artifactId、version

  2.插件执行: execution,id ,phase,goals,configuration

  3.聚合: <modules>

  4.可选依赖:<optional>

  5.排除依赖:<exclusions>

  6.依赖范围 : <scope>, <systemPath>

  7.依赖管理:<dependencyManagement> 

  8.项目属性: <properties>

  9.maven 依赖引用属性:type

  10.maven 默认的属性

1. maven 依赖属性:groupId、artifactId、version

  插件与普通jar 包一样包含 一组件坐标定位属性即:

  groupId、artifactId、version,当使用该插件时会从本地仓库中搜索,如果没有即从远程仓库下载

  1. <!-- 唯一定位到dependency 插件 -->
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-dependency-plugin</artifactId>
  4. <version>2.10</version>

2.插件执行: execution,id ,phase,goals,configuration

    execution 配置包含一组指示插件如何执行的属性:

    id : 执行器命名

    phase:在什么阶段执行?

    goals:执行一组什么目标或功能?

    configuration:执行目标所需的配置文件?

    # 将插件依赖拷贝到指定目录

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-dependency-plugin</artifactId>
  4. <version>3.1.1</version>
  5. <executions>
  6. <execution>
  7. <id>copy-dependencies</id>
  8. <phase>package</phase>
  9. <goals>
  10. <goal>copy-dependencies</goal>
  11. </goals>
  12. <configuration>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
  13. <overWriteReleases>false</overWriteReleases>
  14. <overWriteSnapshots>true</overWriteSnapshots>
  15. <excludeTransitive>true</excludeTransitive>
  16. </configuration>
  17. </execution>
  18. </executions>
  19. </plugin>

3.聚合: <modules>

    指将多个模块整合在一起,统一构建,避免一个一个的构建。聚合需要个父工程,然后使用 <modules> 进行配置其中对应的是子工程的相对路径

  1. <modules>
  2.     <module>tuling-client</module>
  3.     <module>tuling-server</module>
  4. </modules>

4.可选依赖:<optional>

    可选依赖表示这个依赖不是必须的。通过在 <dependency> 添  <optional>true</optional> 表示,默认是不可选的。可选依赖不会被传递。

5.排除依赖:<exclusions>

    即排除指定的间接依赖。通过配置 <exclusions> 配置排除指定组件

  1. <!-- 排除指定项目 -->
  2. <exclusions>
  3.     <exclusion>
  4.        <groupId>org.springframework</groupId>
  5.        <artifactId>spring-web</artifactId>
  6.     </exclusion>
  7. </exclusions>

6.依赖范围 : <scope>, <systemPath>

    像junit 这个组件 我们只有在运行测试用例的时候去要用到,这就没有必要在打包的时候把junit.jar 包过构建进去,可以通过Mave 的依赖范围配置<scope>来达到这种目的。maven 总共支持以下四种依赖范围:

    compile(默认): 编译范围,编译和打包都会依赖。

    provided:提供范围,编译时依赖,但不会打包进去。如:servlet-api.jar

    runtime:运行时范围,打包时依赖,编译不会。如:mysql-connector-java.jar

    test:测试范围,编译运行测试用例依赖,不会打包进去。如:junit.jar

    system:表示由系统中CLASSPATH指定。编译时依赖,不会打包进去。配合<systemPath> 一起使用。

    system 除了可以用于引入系统classpath 中包,也可以用于引入系统非maven  收录的第三方Jar,做法是将第三方Jar放置在 项目的 lib 目录下,然后配置 相对路径,但因system 不会打包进去所以需要配合 maven-dependency-plugin 插件配合使用。   

  1. <!-- system 的通常使用方式-->
  2. <dependency>
  3.     <groupId>com.sun</groupId>
  4.     <artifactId>tools</artifactId>
  5.     <version>${java.version}</version>
  6.     <scope>system</scope>
  7.     <optional>true</optional>
  8.     <systemPath>${java.home}/../lib/tools.jar</systemPath>
  9. </dependency>
  10.  
  11. <!-- system 另外使用方式 ,将工程内的jar直接引入 -->
  12. <dependency>
  13.     <groupId>jsr</groupId>
  14.     <artifactId>jsr</artifactId>
  15.     <version>3.5</version>
  16.     <scope>system</scope>
  17.     <optional>true</optional>
  18.     <systemPath>${basedir}/lib/jsr305.jar</systemPath>
  19. </dependency>

  20. <!-- 通过插件 将system 的jar 打包进去。 -->
  21. <plugin>
  22. <groupId>org.apache.maven.plugins</groupId>
  23. <artifactId>maven-dependency-plugin</artifactId>
  24. <version>2.10</version>
  25. <executions>
  26. <execution>
  27. <id>copy-dependencies</id>
  28. <phase>compile</phase>
  29. <goals>
  30. <goal>copy-dependencies</goal>
  31. </goals>
  32. <configuration>
  33. <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
  34. <includeScope>system</includeScope>
  35. <excludeGroupIds>com.sun</excludeGroupIds>
  36. </configuration>
  37. </execution>
  38. </executions>
  39. </plugin>

7.依赖管理:<dependencyManagement> 

    通过继承的特性,子工程是可以间接依赖父工程的依赖,但多个子工程依赖有时并不一至,这时就可以在父工程中加入 <dependencyManagement> 声明该功程需要的JAR包,然后在子工程中引入。子工程中引入时可省略 <version> 的标签版本

    通过 <dependencyManagement> 可实现在在外面的父pom 中统一管理所有依赖的版本。

  1. <!-- 父工程中声明 junit 4.12 -->
  2. <dependencyManagement>
  3. <dependencies>
  4. <dependency>
  5. <groupId>junit</groupId>
  6. <artifactId>junit</artifactId>
  7. <version>4.12</version>
  8. </dependency>
  9. </dependencies>
  10. </dependencyManagement>
  11. <!-- 子工程中引入 -->
  12. <dependency>
  13. <groupId>junit</groupId>
  14. <artifactId>junit</artifactId>
  15. </dependency>

8.项目属性<properties>:

    通过 <properties> 配置 属性参数,可以简化配置。

    示例:

  1.   <properties>
  2. <java.version>1.8</java.version>
  3. <com.alibaba.version>1.8</com.alibaba.version>
  4. </properties>

  1.   <!-- s{}引用 propertys 中定义的属性 -->  
  1. <dependencies>
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>${com.alibaba.version}</version>
  6. </dependency>
  7. </dependencies>

9.maven 依赖引用属性:type

  maven 引入依赖,默认使用的 type 属性为 jar 类型。当需要引用很多依赖并进行统一管理时,则需要在 dependencyManagement 中声明引用的依赖版本。maven 提供了 引用类型type 为 pom 类型的依赖,这种依赖可以则可以直接使用该依赖中声明的所有jar的依赖管理。如spring-boot,spring-cloud都提供了这样的依赖支持:

  示例:

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-dependencies</artifactId>
  6. <version>2.2.2.RELEASE</version>
  7. <type>pom</type>
  8. <scope>import</scope>
  9. </dependency>
  10. </dependencies>
  11. </dependencyManagement>

  子pom 使用父pom 依赖,则可以直接使用,因为其在上面的pom 内部已经声明了引用的版本等信息:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

10.maven 默认的属性

  1. ${basedir}              项目根目录
  2. ${version}              表示项目版本;
  3. ${project.basedir}          同${basedir};
  4. ${project.version}          表示项目版本,与${version}相同;
  5. ${project.build.directory}       构建目录,缺省为target
  6. ${project.build.sourceEncoding}    表示主源码的编码格式;
  7. ${project.build.sourceDirectory}    表示主源码路径;
  8. ${project.build.finalName}        表示输出文件名称;
  9. ${project.build.outputDirectory}     构建过程输出目录,缺省为target/classes

  idea 中配置maven编译打包忽略Test扫描的命令 : mvn clean install -DskipTests -f pom.xml

maven总结二: 常用标签及属性的更多相关文章

  1. HTML初学者常用标签及属性

    1.HTML5头部结构   [DOCTYPE html] 声明文档类型为HTML5文件. 文档声明在HTML5文档必不可少,且必须放在文档的第一行.   [meta标签] 1-charset属性:单独 ...

  2. HTML之常用标签及属性

    标签 标签分类 标签名 英文 英文含义 标签类型 备注 HTML页面结构 < html> HyperText Markup Language 超文本标记语言 < head> h ...

  3. HTML常用标签及属性

    标签格式 格式: 双边:<标签名 属性1="值1" 属性2='值2' 属性3=值3>内容</标签名> 单边:<标签名 属性1="值1&quo ...

  4. html常用标签及属性,常用英语单词

    目录 html常用标签 html常用标签属性 前端常用英语单词表(未完待续) 欢迎评论点赞交流,转发请添加原博客连接谢谢! Ctrl键+F 可以查找你想要的内容哦! html常用标签 htmi结构 & ...

  5. Web前端——Html常用标签及属性

    html 常用的标题等标签就不记录了,只记录一下比较少见的标签以及属性 表格 table td 单元格 tr 表的行 th 表头 td或th可以下面的两个属性达到跨行或跨列 表格跨行 rowspan ...

  6. css常用标签及属性

    css样式表常用的形式有三种,一.行内样式表.二.内部样式表.三.外部样式表 一. <p style="color:red;">nice to meet you< ...

  7. html中一些常用标签及属性

    html中标签分为块级标签和行级标签 块级标签常用的有 <div> <p> <h1><hr><pre><table><ul ...

  8. HTML常用标签及其属性

    基本 <html>…</html> 定义 HTML 文档 <head>…</head> 文档的信息 <meta> HTML 文档的元信息 & ...

  9. 4.HTML 常用标签及属性

    1. 链接 标签: <a></a> 属性: href:链接地址 target:打开方式 _blank:新标签页打开 _self:当前页面打开(默认) title:链接提示 2. ...

  10. HTML常用标签和属性大全

    html标签< <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑 ...

随机推荐

  1. Git使用(GitEE)

    Git分布式版本控制工具 1. Git概述 1.1 Git历史 Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众多的参与者. 绝大多数的 Linux 内核维护工作都花在了提 ...

  2. 如何实现CesiumJS的视效升级?

    CesiumJS作为一款强大的地理可视化引擎,为我们提供了丰富的地球数据可视化和交互展示的能力.然而,随着用户需求的不断增加和技术的不断进步,如何进一步提升CesiumJS的视觉效果成为了一个重要的问 ...

  3. Android动态数字输入框

    基础view如下: 具体的思路实现: 1:展示textview实现 2: 顶层使用透明的edittext.获取焦点/删除文字等. public class BaseVerificationCodeVi ...

  4. 结合 element -Plus组件库,压缩图片大小,限制图片格式

    业务背景:业务上需求满足上传的图片不能太大,但是有时候上传的图片确实超过了限制大小,所以前端这边可以将图片压缩再上传,亦或者是上传给后端接口的图片只能是指定格式,我们前端需要将图片后缀转化,也可以处理 ...

  5. [集训队作业2013] 城市规划(NTT)

    一周一博客二专题计划 题面 n 个点的简单 (无重边无自环) 有标号无向连通图数目. 看着就很典 思路 设\(f(n)\)为n点连通图数目.设\(g(n)\)为n点不一定联通图数目,显然直接枚举每条边 ...

  6. 分布式机器学习的故事:Docker改变世界

    分布式机器学习的故事:Docker改变世界 Docker最近很火.Docker实现了"集装箱"--一种介于"软件包"和"虚拟机"之间的概念- ...

  7. 【pandas小技巧】--目录(完结)

    pandas小技巧系列是介绍的是使用pandas分析数据时,最常用的一些操作技巧. 具体包括: 创建测试数据 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常常需要花费很多时 ...

  8. curl使用小记(三)——获取远端数据到内存缓冲区

    目录 1. 概述 2. 实现 3. 参考 1. 概述 我在博文<curl使用小记(二)--远程下载一张图片>中介绍了如何通过Curl获取远端的文件.不过在那个例子中,将获取远端数据与写入数 ...

  9. Spring Cloud Eureka 服务注册中心怎么配置

    「Spring Cloud Eureka 入门系列」 Spring Cloud Eureka 入门 (一)服务注册中心详解 Spring Cloud Eureka 入门 (二)服务提供者详解 Spri ...

  10. GaussDB(DWS)函数不同写法引发的结果差异

    本文分享自华为云社区<GaussDB(DWS)函数结果差异案例之greatest>,作者: 你是猴子请来的救兵吗. GaussDB(DWS)支持多种兼容模式,为了兼容目标数据库,各模式之间 ...