GAV坐标
项目 | 解释 |
---|
groupId | 组织机构/顶层项目(机构网址反写+项目名) |
artifactId | 项目/库(项目名+模块名) |
version | 唯一发行版本号 |
- maven使用GAV坐标来唯一标识每个不同的构件的
安装jar包到本地仓库
mvn install:install-file -DgroupId=g -DartifactId=a -Dversion=v -Dclassifier=jdk15 -Dpackaging=jar -Dfile=f
pom文件指定jdk版本和编码
<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>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
使用阿里云镜像仓库提速
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
引用本地lib
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver</artifactId>
<version>8.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/DmJdbcDriver18.jar</systemPath>
</dependency>
指定使用的jdk版本
<profile>
<id>jdk18</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>
- 注意这里的activeByDefault为true,表示如果没有在其他地方激活就默认激活这个profile,也可以使用activeProfiles显式激活
maven构建web的目录结构(使用maven-archetype-webapp)
maven常用插件
命令 | 详解 |
---|
mvn clean | 清理项目生产的临时文件,一般是模块下的target目录 |
mvn compile | 编译源代码,一般编译模块下的src/main/java目录 |
mvn package | 项目打包工具,会在模块下的target目录生成jar或war等文件 |
mvn test | 测试命令,或执行src/test/java/下junit的测试用例. |
mvn install | 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用 |
mvn deploy | 将打包的文件发布到远程参考,提供其他人员进行下载依赖 |
mvn site | 生成项目相关信息的网站 |
mvn eclipse:eclipse | 将项目转化为Eclipse项目 |
mvn dependency:tree | 打印出项目的整个依赖树 |
mvn archetype:generate | 创建Maven的普通java项目 |
mvn tomcat:run | 在tomcat容器中运行web应用 |
mvn jetty:run | 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用 |
冷知识
- 一个java项目通过maven自动下载依赖时,会涉级读取三个配置文件,分别是项目下的pom.xml 文件 、家目录下的.m2/settings.xml 与 maven 全局配置settings.xml ,局部配置优先级大于全局配置,用户自定义配置会覆盖全局配置。所以三者的级先是 pom.xml > ~/.m2/settings.xml > ${M2_HOME}/conf/settings.xml 。
- artifact:中文名为构件,是工程将要产生或需要使用的文件,它可以使jar文件,zip源代码,二进制文件,war文件,甚至可以是pom文件。每个artifact都由GAV坐标唯一识别。
- dependency:为了能够构建或者运行,一个典型的java工程会依赖其他的包。在maven中,这些被依赖的包被称为dependency。dependency一般是其他工程artifact。
- plugin-in:可以说maven就是一堆插件的集合,它的每一个功能都是由插件完成的。插件提供goal(类似Ant中的target),并根据在POM中找到的元数据完成工作。
依赖问题
- A依赖B,若A被包含到工程中,那么B会自动包含到工程中,不需要显式指定。
- A依赖B,B依赖C,C就是A的传递依赖。传递依赖冲突解决方法是短路优先原则和先声明优先原则。
高级用法
- 聚合,使用modules标签聚合几个项目
- 继承,子项目使用parent标签
- dependencyManagement