3.1. Maven
-
我们使用maven构建应用环境,因此我们先来简单介绍maven。Maven是什么?如何回答这个问题
要看你怎么看这个问题。
绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可发布的构件的工具。构建工程师和项目经理会说Maven是一个更复杂
的东西:一个项目管理工具。那么区别是什么? 像Ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发,而 Maven
这样的一个项目管理工具提供了构建工具所提供功能的超集, 除了提供构建的功能,Maven还可以生成报告,生成Web站点,并且帮助推动工作团
队成员间的交流。
-
Maven目前最新版本是2.1.0. 因为maven2.0的版本与maven1.0相比完全是重新设计的,而且速度比以前更快,所以称为 maven2. 目前很多的开源项目都已经采用maven2构建,足见其流行好用的程度。
-
mvn archetype:create :创建 Maven 项目
-
mvn compile :编译源代码
-
mvn test-compile :编译测试代码
-
mvn test : 运行应用程序中的单元测试
-
mvn site : 生成项目相关信息的网站
-
mvn clean :清除目标目录中的生成结果
-
mvn package : 依据项目生成 jar 文件
-
mvn install :在本地 Repository 中安装 jar
-
mvn eclipse:eclipse :生成 Eclipse 项目文件
- mvn -Dmaven.test.skip=true : 忽略测试文档编译
POM全称是Project Object
Model,即项目对象模型。pom.xml是maven的项目描述文件,它类似与antx的project.xml文件。pom.xml文件以xml的
形式描述项目的信息,包括项目名称、版本、项目id、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。总之,它包含了所有的项目
信息。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
modelVersion 描述这个POM文件是遵从哪个版本的项目描述符。
groupId 针对一个项目的普遍唯一识别符。通常用一个完全正确的包的名字来与其他项目的类似名字来进行区分(比如:org.apache.maven)。
artifactId 在给定groupID 的group里面为artifact 指定的标识符是唯一的 , artifact 代表的是被制作或者被一个project应用的组件(产出物)。
version 当前项目产生的artifact的版本
以上4个元素缺一不可,其中groupId, artifactId, version描述依赖的项目唯一标志。
<project>
<modelVersion>4.0.0</modelVersion>
<!- The Basics 项目的基本信息->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!- Build Settings 项目的编译设置->
<build>...</build>
<reporting>...</reporting>
<!- More Project Information 其它项目信息 ->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- Environment Settings ->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>
project是pom.xml的根节点,至于其它元素请参考POM Reference
POM有3个很重要的关系:依赖、继承、合成。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
...
</dependencies>
如果想依赖一个maven库中没有的一个jar包,方法很简单,就是先将此jar包使用以下的命令安装到本地maven库中:
mvn install:install-file -Dfile=my.jar -DgroupId=mygroup -DartifactId=myartifactId -Dversion=1
再把依赖关系加进去即可。
另一个强大的变化, maven带来的是项目继承。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mygroup </groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<packaging>pom</packaging>
</project>
packaging 类型,定义值为 pom用于定义为parent和合成多个项目。 当然我们创建的maven项目的pom都继承maven的super pom, 如果想看项目(父或子)的完全的pom结构,可以运行:
mvn help:effective-pom
就可以了。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mygroup </groupId>
<artifactId>my-child-project</artifactId>
<parent>
<groupId>com.mygroup </groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath>../my-parent</relativePath>
</parent>
</project>
relativePath可以不需要,但是用于指明parent的目录,用于快速查询。
一个项目有多个模块,也叫做多重模块,或者合成项目。 如下的定义:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mygroup </groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<modules>
<module>my-child-project1<module>
<module>my-child-project2<module>
</modules>
</project>
其中module 描述的是子项目的相对路径 。
3.2.4. dependencyManagement和Profile
Maven
还我们提供了一个dependencyManagement元素,用来提供了一种方式来统一依赖版本号。dependencyManagement元素一
般用在顶层的父POM。使用pom.xml中的dependencyManagement元素能让你在子项目中引用一个依赖而不用显式的列出版本号。
Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个
dependencyManagement元素中指定的版本号,这样就解决了修改依赖版本号不完全的问题。
Maven的Profile元素可以为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能。比如要使用
production profile来运行mvn
install,你需要在命令行传入-Pproduction参数,这里production是profile的id。要验证production
profile覆盖了默认的Compiler插件配置,可以像这样以开启调试输入(-X) 的方式运行Maven。
分享到:
相关推荐
以下是对标题和描述中提及的Maven常用命令的详细解释: 1. `mvn clean`:这个命令用于清理项目,删除`target`目录下的所有生成物,包括编译后的类文件、测试结果等。 2. `mvn compile`:编译项目的源代码,将`src/...
Maven常用命令 Maven Maven学习
maven 常用命令集合 Maven 是一个基于项目对象模型(Project Object Model,POM)的项目管理工具,主要用于 Java 项目的构建、测试和部署。Maven 的强大之处在于其提供了一种标准化的方式来构建、测试和部署项目,...
### Maven常用命令 1. **初始化项目结构**: - `mvn archetype:generate` 是用于创建一个新的Maven项目的基础框架。你可以根据提示选择对应的archetype,如maven-archetype-quickstart,来快速生成一个简单的...
一、Maven常用命令 1. 初始化项目结构: `mvn archetype:generate` - 这个命令用于创建一个新的Maven项目,根据提示选择相应的 archetype(项目模板)来生成基础项目结构。 2. 编译源代码: `mvn compile` - ...
### Maven常用命令详解 #### 1. `mvn -v` - **命令**: `mvn -v`(注意:实际命令应为 `mvn --version` 或 `mvn -version`) - **功能**: 显示Maven当前版本信息。 - **应用场景**: 当需要确认当前使用的Maven版本时...
Maven常用命令 mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码 mvn test-compile :编译测试代码 mvn test : 运行应用程序中的单元测试 mvn site : 生成项目相关信息的网站 mvn clean :清除...
Maven 常用命令 Maven 是一个基于项目对象模型(Project Object Model,POM)的项目管理工具,主要用于管理和构建 Java 项目。以下是 Maven 中的一些常用命令: 1. 创建项目 Maven 提供了 archetype 机制来快速...
摘要:本文主要讲解是Maven使用过程中一些常用的命令,并配上图片说明,最后还讲了pom.xml文件的一些构造。-D传入属性参数-P使用pom中指定的配置-e显示maven运行出错的信息-o离线执行命令,即不去远程仓库更新包-X...
以下是一些Maven的常用命令及其详细解释: 1. **创建Maven项目**: - `mvn archetype:create -DgroupId=packageName -DartifactId=projectName`:创建一个基本的Java项目。 - `mvn archetype:create -DgroupId=...
### Maven命令详解 Maven是Java项目自动化构建工具的一个标准,它通过一组生命周期构建项目对象模型(POM),简化了构建...以上就是关于Maven常用命令的详细介绍。通过掌握这些命令,可以更高效地管理和构建Java项目。
### Maven常用命令总结 Maven是一款非常流行的Java项目构建工具,它通过一组生命周期构建规则来管理项目的构建过程,包括编译、测试、打包、部署等。掌握Maven的基本使用方法对于进行Java项目的开发和维护至关重要...
以下是一些常用的maven配置命令: * mvn -v:查看maven版本 * mvn compile:进行编译 * mvn test:运行测试类 * mvn package:生成jar包 * mvn clean:删除target目录 * mvn install:将jar包安装到本地仓库 * mvn ...
本文将对Maven构建Web工程相关的常用命令进行总结。 #### Maven项目初始化 - **初始化Java应用** - 命令格式:`mvn archetype:generate -DgroupId=...
使用于windows-x64为的压缩包 将此文件解压,并保存到你...maven常用命令 mvn compile编译当前项目 mvn clean清理当前目录 mvn test测试src/test文件夹下的代码 mvn package 打包此项目 mvn install 安装此项目的依赖包