1. 在windows上安装Maven.
设置环境变量:
c:\users\jeffrey>set M2_HOME=C:\Apache-Maven-2.2.1
c:\users\jeffrey>set PATH=%PATH%;%M2_HOME%\bin
2. Maven Help插件
help:active-profiles : 列出当前构建中活动的Profile(项目的,用户的,全局的)
help:effective-pom: 显示当前构件的实际pom,包含活动的profile
help:effective-settings: 打印出项目的实际setting,包括从全局的setting和用户级别settings继承的配置
help:describe:描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的groupId和artifactId
3. 创建简单项目
$mvn archetype:create -DgroupId=com.trendmicro.demo -DartifactId=simple -DpackageName=com.trendmicro
4. pom.xml文件是Maven项目中最基础的POM.
--groupId,artifactId,packaging,version是Maven的坐标,他们唯一标识了项目。
5. 最简单的POM
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.trendmicro.demo</groupId>
<artifactId>simple-project</artifactId>
<version>1</version>
</project>
验证项目是否有效,在pom.xml文件所在的目录执行命令$mvn help:effective-pom
6. 项目的版本号构成
主版本.次版本.增量版本-限定版本(如: 1.0.0-beta-01,1.2.4-alpha-09)
SNAPSHOT版本:表示项目正处于活动的开发状态,Maven会在安装或发布这个组件的时候将该符号展开为一个日期和时间值
LATEST和RELEASE版本:LATEST是指某个特定构件最新的发布版或者快照版,最近被部署到某个特定仓库的构件。RELEASE是指仓库中最后的一个非快照版本。
7. 属性引用
一个POM可以通过一对大括号和前面一个美元符号来包含对属性的引用。
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysqlVersion}</version>
</dependency>
</dependencies>
<properties>
<mysqlVersion>(5.1,)</mysqlVersion>
</properties>
8. 项目依赖
<project>
...
<dependencies>
<dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-java5</artifactId>
<version>1.2.5</version>
<scope>compile</scope>
</dependency>
...
</dependencies>
...
</project>
依赖范围:
compile(编译范围):编译范围依赖在所有的classpath中可用,同时它们也会被打包
provided(以提供范围):provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。它们不是传递性的,也不会被打包。
runtime(运行时范围):runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
test(测试范围):test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system(系统范围):system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,
Maven也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的Maven仓库中引用依赖)。
可选依赖:
在POM中用<option>true</option>表示。编译这个项目的时候你需要两个依赖类库,但是你不希望在使用你类库的项目中,这两个依赖类库同时作为传递性运行时依赖出现。
依赖版本界限:
(,)不包含量词。[,]包含量词 如:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[3.8,4.0)</version>
<scope>test</scope>
</dependency>
依赖管理:
Maven在dependencyManagement元素中为你提供了一种方式来统一依赖版本号。你经常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素。
如定义MySQL-Driver,子项目没有显式的列出mysql-connector-java依赖的版本。由于这个依赖在顶层POM的dependencyManagement元素中定义了,该版本号就会传播到所有子项目的mysql-connector-java依赖中。
注意如果子项目定义了一个版本,它将覆盖顶层POM的dependencyManagement元素中的版本。那就是:只有在子项目没有直接声明一个版本的时候,dependencyManagement定义的版本才会被使用.
9. Maven坐标详解
groupId:一个归类了一组相关构件。组定义符基本上类似于一个java包名。
artifactId:是项目的主要定义符。当你生成一个构件,这个构件将由artifactId命名。当你引用一个项目,你就需要使用artifactId来引用它。artifactId和groupId的组合必须是唯一的。
versionId:当一个构件发布的时候,它是使用一个版本号发布的。该版本号是一个数字定义。
classifier:(最少使用的):如果你要发布同样的代码,但是由于技术原因需要生成两个单独的构件,你就要使用一个分类器。例如,你想要构建两个单独的构件成jar,一个使用java 1.4编译器,另一个使用java 1.6编译器。
10. Maven Surefire插件是负责运行单元测试的插件。
11. 如果想跳过整个测试后进行打包
$mvn install -Dmaven.test.skip=true
12. 通过Maven Profiles实现可移植性
Maven中的profile是一组可选的配置,可以用来设置或者覆盖默认值。有了profile,你就可以为不同的环境定制构建。profile可以在pom.xml中配置,并给定一个id。然后你就可以在运行Maven的时候使用的命令告诉Maven运行特定profile中的目标。以下pom.xml使用production profile覆盖了默认的Compiler插件设置。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>simple</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>simple</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>#
<profile>
<id>production</id>#
<build>#
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>false</debug>#
<optimize>true</optimize>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
激活profile配置
<profiles>
<profile>
<id>jdk16</id>
<activation>#
<jdk>1.6</jdk>
</activation>
<modules>#
<module>simple-script</module>
</modules>
</profile>
</profiles>
13. 使用Maven构建项目站点
$mvn site:run
分享到:
相关推荐
maven学习笔记maven学习笔记maven学习笔记
**Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过使用一个项目对象模型(Project Object Model,POM),XML格式的配置文件,定义了...
** Maven基础入门 ** Maven是一个Java项目管理工具,它主要负责构建、依赖管理和项目信息管理。...在`maven_study_01`的学习笔记中,你可以找到更多关于Maven的基础知识和实践案例,帮助你快速上手并掌握这一工具。
maven学习笔记整理
在“培训机构传出的maven学习笔记”中,我们可能涵盖以下几个关键知识点: 1. **Maven的基本概念**:理解Maven的核心概念,如POM.xml文件、仓库(本地仓库和中央仓库)、生命周期和构建阶段(如clean、compile、...
【Maven学习笔记1】 Maven是一个强大的Java项目管理和构建工具,它可以帮助开发者管理项目的依赖、构建过程、项目信息和报告。本笔记主要涵盖了Maven的基础知识,包括资料收集、安装指南,特别是针对Linux环境下的...
** Maven学习笔记详解 ** Maven,作为Java项目管理和构建工具,是开发人员不可或缺的利器。它通过使用一种标准化的项目对象模型(Project Object Model,POM)来管理项目的依赖关系,构建过程以及配置信息。Maven...
【mybatis_maven学习笔记】 在Java开发领域,MyBatis和Maven是两个不可或缺的工具,它们分别在数据访问层和项目构建方面扮演着重要角色。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...
### 个人Maven学习笔记 #### 为什么使用Maven? 在软件开发过程中,尤其是在使用Java进行后端开发时,项目通常会依赖大量的第三方库或框架。如果没有统一的管理工具,这些依赖很容易出现版本冲突的问题,增加了...
**Maven学习笔记** Maven是一个强大的Java项目管理和构建工具,它简化了项目的构建、依赖管理和文档生成。本文档基于尚硅谷的视频教程,旨在帮助读者深入理解Maven的核心概念和使用方法。 **1. 为什么学习Maven** ...
【Maven学习笔记】 Maven是一个强大的项目管理和构建工具,主要应用于Java开发领域。它能够自动管理项目的依赖关系,帮助开发者解决因jar包版本冲突、依赖管理混乱等问题带来的困扰。Maven通过制定一套规范化的项目...
**Maven学习笔记大全** Maven是一个强大的Java项目管理工具,它通过项目对象模型(Project Object Model,简称POM)来管理和构建项目。POM是一个XML文件,包含了项目的配置信息,如依赖、构建过程和插件设置。Maven...
【标题】:“201205_Maven学习笔记1.rar”揭示了关于Maven的深入学习内容,这个压缩包包含了一系列文档,旨在帮助开发者更好地理解和应用Maven这一强大的Java项目管理和构建工具。 【描述】:尽管描述部分是空的,...
内容概要:maven学习笔记,适合刚接触maven的人能让你快速入门。 适用人群:大学生或者初基础maven的人 使用场景及目标:idea集成maven,用来下载依赖包
【标题】"201205_Maven学习笔记3.rar"所涵盖的知识点主要集中在Maven的使用和集成上,这是一个关于Maven的详细学习资料压缩包,包含多个文档,帮助用户理解并掌握Maven在实际开发中的应用。Maven是一个强大的Java...
Maven学习笔记,使用中遇到的问题,集成eclipse的各种坑,以便记录,为了以后复习使用。