maven总结二: 常用标签及属性
本文为博主原创,未经允许不得转载
目录:
1. maven 依赖属性:groupId、artifactId、version
2.插件执行: execution,id ,phase,goals,configuration
3.聚合:
4.可选依赖:
5.排除依赖:
6.依赖范围 :
7.依赖管理:
8.项目属性:
9.maven 依赖引用属性:type
10.maven 默认的属性
1. maven 依赖属性:groupId、artifactId、version
插件与普通jar 包一样包含 一组件坐标定位属性即:
groupId、artifactId、version,当使用该插件时会从本地仓库中搜索,如果没有即从远程仓库下载
org.apache.maven.plugins maven-dependency-plugin 2.10
2.插件执行: execution,id ,phase,goals,configuration
execution 配置包含一组指示插件如何执行的属性:
id : 执行器命名
phase:在什么阶段执行?
goals:执行一组什么目标或功能?
configuration:执行目标所需的配置文件?
# 将插件依赖拷贝到指定目录
org.apache.maven.plugins maven-dependency-plugin 3.1.1 copy-dependencies package copy-dependencies
${project.build.directory}/alternateLocation false true true
3.聚合:
指将多个模块整合在一起,统一构建,避免一个一个的构建。聚合需要个父工程,然后使用
tuling-client tuling-server
4.可选依赖:
可选依赖表示这个依赖不是必须的。通过在
5.排除依赖:
即排除指定的间接依赖。通过配置
org.springframework spring-web
6.依赖范围 : ,
像junit 这个组件 我们只有在运行测试用例的时候去要用到,这就没有必要在打包的时候把junit.jar 包过构建进去,可以通过Mave 的依赖范围配置
compile(默认): 编译范围,编译和打包都会依赖。
provided:提供范围,编译时依赖,但不会打包进去。如:servlet-api.jar
runtime:运行时范围,打包时依赖,编译不会。如:mysql-connector-java.jar
test:测试范围,编译运行测试用例依赖,不会打包进去。如:junit.jar
system:表示由系统中CLASSPATH指定。编译时依赖,不会打包进去。配合
system 除了可以用于引入系统classpath 中包,也可以用于引入系统非maven 收录的第三方Jar,做法是将第三方Jar放置在 项目的 lib 目录下,然后配置 相对路径,但因system 不会打包进去所以需要配合 maven-dependency-plugin 插件配合使用。
com.sun tools ${java.version} system true ${java.home}/../lib/tools.jar jsr jsr 3.5 system true ${basedir}/lib/jsr305.jar
org.apache.maven.plugins maven-dependency-plugin 2.10 copy-dependencies compile copy-dependencies ${project.build.directory}/${project.build.finalName}/WEB-INF/lib system com.sun
7.依赖管理:<dependencyManagement>
通过继承的特性,子工程是可以间接依赖父工程的依赖,但多个子工程依赖有时并不一至,这时就可以在父工程中加入
通过 <dependencyManagement> 可实现在在外面的父pom 中统一管理所有依赖的版本。
<!-- 父工程中声明 junit 4.12 -->junit junit 4.12 junit junit
8.项目属性:
通过
示例:
1.8 1.8
com.alibaba fastjson ${com.alibaba.version}
9.maven 依赖引用属性:type
maven 引入依赖,默认使用的 type 属性为 jar 类型。当需要引用很多依赖并进行统一管理时,则需要在 dependencyManagement 中声明引用的依赖版本。maven 提供了 引用类型type 为 pom 类型的依赖,这种依赖可以则可以直接使用该依赖中声明的所有jar的依赖管理。如spring-boot,spring-cloud都提供了这样的依赖支持:
示例:
org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE pom import
子pom 使用父pom 依赖,则可以直接使用,因为其在上面的pom 内部已经声明了引用的版本等信息:
org.springframework.boot spring-boot-starter-web
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