maven总结二: 常用标签及属性
本文为博主原创,未经允许不得转载
目录:
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,当使用该插件时会从本地仓库中搜索,如果没有即从远程仓库下载
<!-- 唯一定位到dependency 插件 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
2.插件执行: execution,id ,phase,goals,configuration
execution 配置包含一组指示插件如何执行的属性:
id : 执行器命名
phase:在什么阶段执行?
goals:执行一组什么目标或功能?
configuration:执行目标所需的配置文件?
# 将插件依赖拷贝到指定目录
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
3.聚合: <modules>
指将多个模块整合在一起,统一构建,避免一个一个的构建。聚合需要个父工程,然后使用 <modules> 进行配置其中对应的是子工程的相对路径
<modules>
<module>tuling-client</module>
<module>tuling-server</module>
</modules>
4.可选依赖:<optional>
可选依赖表示这个依赖不是必须的。通过在 <dependency> 添 <optional>true</optional> 表示,默认是不可选的。可选依赖不会被传递。
5.排除依赖:<exclusions>
即排除指定的间接依赖。通过配置 <exclusions> 配置排除指定组件
<!-- 排除指定项目 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</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 插件配合使用。
<!-- system 的通常使用方式-->
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<optional>true</optional>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency> <!-- system 另外使用方式 ,将工程内的jar直接引入 -->
<dependency>
<groupId>jsr</groupId>
<artifactId>jsr</artifactId>
<version>3.5</version>
<scope>system</scope>
<optional>true</optional>
<systemPath>${basedir}/lib/jsr305.jar</systemPath>
</dependency>
<!-- 通过插件 将system 的jar 打包进去。 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
<includeScope>system</includeScope>
<excludeGroupIds>com.sun</excludeGroupIds>
</configuration>
</execution>
</executions>
</plugin>
7.依赖管理:<dependencyManagement>
通过继承的特性,子工程是可以间接依赖父工程的依赖,但多个子工程依赖有时并不一至,这时就可以在父工程中加入 <dependencyManagement> 声明该功程需要的JAR包,然后在子工程中引入。子工程中引入时可省略 <version> 的标签版本
通过 <dependencyManagement> 可实现在在外面的父pom 中统一管理所有依赖的版本。
<!-- 父工程中声明 junit 4.12 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 子工程中引入 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
8.项目属性<properties>:
通过 <properties> 配置 属性参数,可以简化配置。
示例:
<properties>
<java.version>1.8</java.version>
<com.alibaba.version>1.8</com.alibaba.version>
</properties>
<!-- s{}引用 propertys 中定义的属性 -->
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${com.alibaba.version}</version>
</dependency>
</dependencies>
9.maven 依赖引用属性:type
maven 引入依赖,默认使用的 type 属性为 jar 类型。当需要引用很多依赖并进行统一管理时,则需要在 dependencyManagement 中声明引用的依赖版本。maven 提供了 引用类型type 为 pom 类型的依赖,这种依赖可以则可以直接使用该依赖中声明的所有jar的依赖管理。如spring-boot,spring-cloud都提供了这样的依赖支持:
示例:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
子pom 使用父pom 依赖,则可以直接使用,因为其在上面的pom 内部已经声明了引用的版本等信息:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
10.maven 默认的属性
${basedir} 项目根目录
${version} 表示项目版本;
${project.basedir} 同${basedir};
${project.version} 表示项目版本,与${version}相同;
${project.build.directory} 构建目录,缺省为target
${project.build.sourceEncoding} 表示主源码的编码格式;
${project.build.sourceDirectory} 表示主源码路径;
${project.build.finalName} 表示输出文件名称;
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
idea 中配置maven编译打包忽略Test扫描的命令 : mvn clean install -DskipTests -f pom.xml
maven总结二: 常用标签及属性的更多相关文章
- HTML初学者常用标签及属性
1.HTML5头部结构 [DOCTYPE html] 声明文档类型为HTML5文件. 文档声明在HTML5文档必不可少,且必须放在文档的第一行. [meta标签] 1-charset属性:单独 ...
- HTML之常用标签及属性
标签 标签分类 标签名 英文 英文含义 标签类型 备注 HTML页面结构 < html> HyperText Markup Language 超文本标记语言 < head> h ...
- HTML常用标签及属性
标签格式 格式: 双边:<标签名 属性1="值1" 属性2='值2' 属性3=值3>内容</标签名> 单边:<标签名 属性1="值1&quo ...
- html常用标签及属性,常用英语单词
目录 html常用标签 html常用标签属性 前端常用英语单词表(未完待续) 欢迎评论点赞交流,转发请添加原博客连接谢谢! Ctrl键+F 可以查找你想要的内容哦! html常用标签 htmi结构 & ...
- Web前端——Html常用标签及属性
html 常用的标题等标签就不记录了,只记录一下比较少见的标签以及属性 表格 table td 单元格 tr 表的行 th 表头 td或th可以下面的两个属性达到跨行或跨列 表格跨行 rowspan ...
- css常用标签及属性
css样式表常用的形式有三种,一.行内样式表.二.内部样式表.三.外部样式表 一. <p style="color:red;">nice to meet you< ...
- html中一些常用标签及属性
html中标签分为块级标签和行级标签 块级标签常用的有 <div> <p> <h1><hr><pre><table><ul ...
- HTML常用标签及其属性
基本 <html>…</html> 定义 HTML 文档 <head>…</head> 文档的信息 <meta> HTML 文档的元信息 & ...
- 4.HTML 常用标签及属性
1. 链接 标签: <a></a> 属性: href:链接地址 target:打开方式 _blank:新标签页打开 _self:当前页面打开(默认) title:链接提示 2. ...
- HTML常用标签和属性大全
html标签< <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑 ...
随机推荐
- 容器网络Cilium:DualStack双栈特性分析
本文分享自华为云社区<容器网络Cilium入门系列之DualStack双栈特性分析>,作者: 可以交个朋友. 一 . 关于IPV6/IPV4 双栈 目前很多公司开始将自己的业务由ipv4切 ...
- Docker命令之export|import、save|load
1.export|import export docker export -o /ly/myexport-redis 49c26f7431d1 -o : 指定一个不存在的文件夹,存放导出的镜像 imp ...
- 专业的字节码查看工具——jclasslib
下载地址: GitHub地址:点击下方蓝色链接即可. https://github.com/ingokegel/jclasslib/releases/download/6.0.4/jclasslib_ ...
- shell中 << EOF 和 EOF 使用
转载请注明出处: EOF(End of File)在Shell中通常用于指示输入的结束,并在脚本或命令中进行多行输入.它允许用户指定一个特定的分界符来表示输入的结束,通常用于创建临时文件.重定向输入或 ...
- MinIO客户端之share
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc share mc share download mc share upload 生成下载对象的URL,指定对 ...
- history详解
linux下history命令详解 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. ...
- Java通过SSH连接路由器,输入命令并读取响应
最近需要读取和修改华为路由器的配置,使用Java语言开发,通过SSH连接,输入命令并读取响应. 1.添加mwiede/jsch依赖 如果使用Maven,可以在pom.xml文件中添加以下依赖: < ...
- CodeForces 1030E Vasya and Good Sequences 位运算 思维
原题链接 题意 目前我们有一个长为n的序列,我们可以对其中的每一个数进行任意的二进制重排(改变其二进制表示结果的排列),问我们进行若干次操作后得到的序列,最多能有多少对 \(l, r\) 使得 \([ ...
- 快速入门Mybatis完成基本CURD(注解实现)
一.什么是Mybatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...
- C# 查找PDF页面指定区域中的文本并替换和高亮
对PDF文档中的内容进行查找时,可针对文档全篇内容获取查找结果,也可在PDF指定页面中的特定范围内(矩形框区域)进行查找,对获取的查找结果可执行文本高亮或替换等操作,本文将对此作相关介绍(附VB.NE ...