1.maven常用命令
mvn archetype:create :创建 Maven 项目
mvn compile :编译源代码
mvn test-compile :编译测试代码
mvn test : 运行应用程序中的单元测试
mvn site : 生成项目相关信息的网站
mvn clean :清除目标目录中的生成结果
mvn package : 依据项目生成 jar 文件或者打zip包
mvn install :在本地 Repository 中安装 jar
mvn deploy:发布到私服上
mvn eclipse:eclipse :生成 Eclipse 项目文件
mvn -Dmaven.test.skip=true : 忽略测试文档编译
mvn archetype:generate 你是怎么创建你的maven项目的?是不是像这样:mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dartifact=common,如果你还再用的话,那你就out了,现代人都用mvn archetype:generate了,它将创建项目这件枯燥的事更加人性化,你再也不需要记那么多的archetypeArtifactId,你只需输入archetype:generate,剩下的就是做”选择题”了.
mvn tomcat:run 用了maven后,你再也不需要用eclipse里的tomcat来运行web项目(实际工作中经常会发现用它会出现不同步更新的情况),只需在对应目录(如/ryanote)里运行 mvn tomat:run命令,然后就可在浏览器里运行http://localhost:8080/ryanote查看了.如果你想要更多的定制,可以在pom.xml文件里加下面配置: 01 02 03 04 org.codehaus.mojo 05 tomcat-maven-plugin 06 07 /web 08 9090 09 10 11 当然你也可以在命令里加参数来实现特定的功能,下面几个比较常用: 1. 跳过测试:-Dmaven.test.skip(=true) 2. 指定端口:-Dmaven.tomcat.port=9090 3. 忽略测试失败:-Dmaven.test.failure.ignore=true 当然,如果你的其它关联项目有过更新的话,一定要在项目根目录下运行mvn clean install来执行更新,再运行mvn tomcat:run使改动生效.
mvnDebug tomcat:run 这条命令主要用来远程测试,它会监听远程测试用的8000端口,在eclipse里打开远程测试后,它就会跑起来了,设断点,调试,一切都是这么简单.上面提到的那几个参数在这里同样适用
mvn dependency:sources 故名思义,有了它,你就不用到处找源码了,运行一下,你项目里所依赖的jar包的源码就都有了
2.依赖
使用 Maven 可以方便的管理依赖,如下是一段在 pom.xml 文件中声明依赖的代码示例:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.2.0.RELEASE</version> <type>jar</type> <scope>test</scope> <systemPath>${java.home}/lib/rt.jar</systemPath> <optional>false</optional> <exclusions> <exclusion></exclusion> </exclusions> </dependency> </dependencies>
type:依赖类型,对应构件中定义的 packaging,可不声明,默认为 jar;
scope:依赖范围;
optional:依赖是否可选;
exclusions:排除传递依赖。
3.maven依赖关系中Scope的作用
执行不同的 Maven 命令(mvn package,mvn test,mvn install ……),会使用不同的 classpath,Maven 对应的有三套 classpath:编译classpath、测试classpath,运行classpath。scope 选项的值,决定了该依赖构件会被引入到哪一个 classpath 中。
compile:编译依赖范围,默认值。此选项对编译、测试、运行三种 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在编译、测试、运行的时候都需要该依赖;
test:测试依赖范围。只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;
provided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
system:系统依赖范围。和 provided 依赖范围一致,需要通过 <systemPath> 显示指定,且可以引用环境变量;
import:导入依赖范围。使用该选项,通常需要 <type>pom</type>,将目标 pom 的 dependencyManagement 配置导入合并到当前 pom 的 dependencyManagement 元素。
4.maven的坐标
maven 的所有构件均通过坐标进行组织和管理。maven 的坐标通过 5 个元素进行定义,其中 groupId、artifactId、version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的。
groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应。
artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactId 开头,如 hibernate-core-3.6.5.Final.jar。
version:定义项目版本。
packaging:定义项目打包方式,如 jar,war,pom,zip ……,默认为 jar。
classifier:定义项目的附属构件,如 hibernate-core-3.6.6.Final-sources.jar,hibernate-core-3.6.6.Final-javadoc.jar,其中 sources 和 javadoc 就是这两个附属构件的 classifier。classifier 不能直接定义,通常由附加的插件帮助生成。
5.maven依赖
依赖冲突
通常我们不需要关心传递性依赖,当多个传递性依赖中有对同一构件不同版本的依赖时,如何解决呢?
短路径优先:假如有以下依赖:A -> B -> C ->X(版本 1.0) 和 A -> D -> X(版本 2.0),则优先解析较短路径的 X(版本 2.0);
先声明优先:若路径长度相同,则谁先声明,谁被解析,如果希望精确的空子依赖包,可以使用依赖的排除功能
依赖排除
针对依赖冲突中的“短路径优先”,如果我们想使用长路径的依赖怎么办呢?这时可以使用依赖排除 <exclusions> 元素,显示排除短路径依赖。在非冲突的情况下,这种方法同样有效。
6.maven常用变量
在配置 pom.xml 文件时我们经常会使用到一些 Maven 中提前定义好的变量来统一控制某些关键参数,使得 pom 文件的管理更为合理。
注:在 Maven 的 3.X 版本以后,所有的 pom.* 参数全部改为了 project.*。
Maven 开发中使用的 ${XXX} 类型的参数大体可分为7类:
1.Built-in properties 内置参数
${basedir} 代表项目中 pom.xml 文件所在的文件夹;
${version} 代表项目的版本,等价于 ${project.version}(老版本中的 ${pom.version}),即 pom 文件中<version></version>标签内定义的版本号。
2.Pom/Project properties Pom/项目参数
所有在 pom 文件中定义的项目相关元素,可通过 project. 前缀(老版本中的 pom. 前缀)来进行引用。
${project.build.directory} 代表了项目编译后的目录,等同于 ${pom.project.build.directory},默认为“target”;
${project.build.outputDirectory} 代表了项目输出目录,默认为“target/classes”;
${project.name} 代表了项目名称(老版本中的 ${pom.name}),即 pom 文件中<name></name>标签内定义的项目名称;
${project.build.finalName} 代表了项目最终打包后生成文件的名称,即 pom 文件中<finalName></finalName>标签内定义的项目打包名称。
3.Local user settings 用户本地配置参数
在用户 settings.xml 文件中定义的元素,可通过 settings. 前缀来进行引用。
${settings.localRepository} 代表了本地仓库路径,即 settings 文件中定义的本地仓库路径。
4.Environment variables 环境变量
系统环境变量可以通过 env. 前缀来进行引用。
${env.M2_HOME} 代表了环境变量中配置的 M2_HOME 的值;
${java.home} 代表了环境变量中配置的 JAVA_HOME 的值。
5.Java system propertie Java 系统参数
同样可以引用 JVM 中定义的 Java 系统参数。
6.Custom properties in the POM 用户自定义参数
用户在 pom.xml 文件中可自定义参数,并进行引用。
${jdk.version} 代表了 JDK 的版本参数,即 pom 文件中<properties></properties>标签内定义的<jdk.version></jdk.version>标签中的值。
7.Parent Project variables 父级参数
父级 pom.xml 文件中定义的元素,可通过 parent. 前缀来进行引用。
${parent.version} 代表了 父级 pom 文件中<version></version>标签内定义的版本号。
相关推荐
不过,如果这个项目与Maven构建有关,那么它可能是一个使用Maven管理的子项目,或者是需要通过Maven进行集成和部署的第三方服务。 总的来说,Apache Maven 3.3.9提供了一套强大而灵活的构建工具,能够帮助Java...
Maven是一个项目管理工具,用于构建、依赖管理和项目信息管理。在这个项目中,Maven负责管理项目的构建过程,通过`pom.xml`文件定义项目依赖,自动下载并管理所需的库文件,确保所有组件能够正确集成和运行。 2. *...
Apache Maven 是一个强大的Java项目管理工具,它基于项目对象模型(Project Object Model, POM)的概念,能够自动化构建、依赖管理和项目信息管理。Maven 的核心理念是通过标准化项目结构和依赖管理,简化Java开发...
2. **NOTICE**: 此文件通常包含对Maven中使用的第三方库的版权和许可信息,提醒用户注意这些依赖项可能需要遵守的额外条款。 3. **README.txt**: 这是一个标准的文本文件,可能会包含关于如何安装、配置和使用Maven...
Maven有两个主要的仓库:本地仓库(Local Repository)存储已下载的依赖,全局仓库(Remote Repository)包含公开的第三方库,如Central Repository。 9. **Maven的命令行工具**: Maven提供了命令行工具`mvn`,...
2. **解压**:使用解压缩工具(如内置的“Finder”或第三方软件)打开并解压下载的文件到你希望安装的位置,比如`/usr/local/`目录下。 3. **配置环境变量**:为了让系统能够找到Maven,你需要编辑`~/.bash_profile...
Maven 是一个项目管理和综合工具,用于自动化构建、依赖管理和项目信息管理。在Doris中,Maven 负责管理项目的构建过程,确保所有依赖项正确无误地被引入。在编译Doris源码时,Maven的`pom.xml`文件是关键,它定义了...
Apache Maven 是一个强大的项目管理和构建工具,可用于 Java 项目的构建、依赖管理和项目管理。Apache Maven 3.9.6-bin 是 Apache Maven 的一个特定版本,其中的“bin”表示这是二进制分发版,适用于直接使用而无需...
Maven通过其中央仓库系统,使得开发者可以方便地引用和管理项目所需的第三方库(jar文件)。在`pom.xml`文件中,开发者可以声明项目依赖,Maven会自动下载并管理这些依赖,避免了版本冲突和手动管理jar文件的繁琐...
2. **NOTICE**:通知用户关于软件中包含的第三方库和组件的版权信息,以及可能需要遵循的额外许可条款。 3. **README.txt**:提供了关于如何安装、配置和使用 Maven 的基本指南,是新用户快速上手的重要文档。 4. ...
"maven"是项目名称,"maven3"表明这是Maven的第三个主要版本,"maven3.1"特指3.1系列,而"apache-maven"是项目的全称,表明它是由Apache软件基金会维护的。 在"压缩包子文件的文件名称列表"中,我们只有一个条目:...
2. **依赖管理**:Maven通过POM中的依赖配置自动下载并管理项目所需的所有库,避免了手动管理jar文件的繁琐工作。只需在POM中声明依赖,Maven会自动解决依赖关系,并从Maven仓库中下载。 3. **构建生命周期**:...
Apache Maven 是一个强大的项目管理工具,它主要用于Java项目的构建、依赖管理和项目信息管理。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过POM来管理和描述项目。`apache-maven-3.5.4-...
创建 Maven 项目的第一步是编写 `pom.xml` 文件,这是 Maven 的核心,包含了项目的元数据,如项目名称、版本、依赖等。一个基本的 `pom.xml` 文件如下: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0...
Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。"apache-maven-3.1.1-bin.tar.gz" 是Maven 3.1.1版本的二进制发行版的压缩文件,它包含了运行Maven所需的所有组件。这个...
1. **依赖管理**:Maven提供了对jar包的统一管理,能够有效地减少项目中的jar包冲突问题,同时也节省了大量的存储空间。 2. **一键构建**:Maven支持从编码、编译、测试到部署的一键式操作,大大提高了开发效率。...
2. **NOTICE**:此文件包含了对Maven项目中使用的第三方库和代码的版权信息和许可通知。遵循这些通知可以确保你在使用Maven时遵守所有相关的开源软件许可证。 3. **README.txt**:通常,这是一个文本文件,提供了...
Maven Archetype 是 Apache Maven 项目管理工具中的一个重要概念,它主要用于创建项目的初始结构。Maven Archetype 并非一个简单的模板,而是一种可重复使用的构建模块,能够根据预定义的配置生成一个新的 Maven ...
Maven 是一个基于项目对象模型(POM)的项目管理工具,能够帮助开发者更好地管理项目的依赖关系和编译过程。首先,我们需要下载和安装 Maven。下载 Apache Maven 3.1.1-bin.zip 文件,解压到本地目录下,例如 X:\...