1.Maven介绍
Maven的核心很简单,主要是通过插件实现项目管理和项目生命周期管理。
使用maven构建的项目都有坐标唯一标识,坐标包含groupId,artifactId,version,packaging.
groupId |
团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是, 它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。来 自 Sonatype 的项目有一个以 com.sonatype 开头的groupId,而 Apache Software的项目有以 org.apache 开头的groupId。 |
artifactId |
在groupId下的表示一个单独项目的唯一标识符。 |
version |
一个项目的特定版本。 发布的项目有一个固定的版本标识来指向该项目的 某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标 识给版本加上一个“SNAPSHOT”的标记 |
packaging |
项目的打包格式也是 Maven 坐标的重要组成部分,但是它不是项目唯一标识符 的一个部分。一个项目的groupId:artifactId:version使之成为一个独一无二 的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的 项目。 项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目 产生一个 JAR文件,类型为war的项目产生一个 web应用。 |
通常一个工程依赖于很多jar包,但是使用maven构建项目的jar包时,它的依赖不会被捆绑在生成的构件中,
他们只是用来编译。当用 Maven 来创建 WAR 或者 EAR,你可以配置 Maven 让它在生
成的构件中捆绑依赖,你也可以配置 Maven,使用provided范围,让它排除WAR文件中特定的依赖。
2.常用命令列表
mvn archetype:create -DgroupId=com.taobao.upp -DartifactId=simple
[插件名称] [目标] [参数] [参数]
maven定义的生命周期中主要的相位如下:
validate: 验证项目是否正确以及相关信息是否可用。
compile: 编译。
test: 通过junit进行单元测试。
package: 根据事先指定的格式(比如jar),进行打包。
integration-test: 部署到运行环境中,准备进行集成测试。
verify: 对包进行有效性性和质量检查。
install: 安装到本地代码库。
deploy: 在集成或发布环境,将包发布到远程代码库。
Maven核心概念
坐标,依赖,仓库,生命周期,插件
1.坐标
坐标组成:
* groupId: com.companyname.projectname
* artifactId modulename (like project_service)
* version 1.0 (2.0 …)
* packaging jar (war …)
* classifier javadoc, jdk15
示例坐标:
com/companyname/projectname/modulename/1.0/modulename-1.0.jar
2.依赖
依赖范围是指项目所依赖的包,在什么时候被引用,例如junit,只是在测试时依赖
依赖范围(Scope):compile,test,provided,runtime
传递性依赖:如果项目依赖于一个包,而这个包又依赖于另一个包,则两个包都会被添加到项目的依赖里面。可以通过剔除依赖传递来管理。具体见Maven培训文档
依赖管理:指父项目和子项目之间的依赖管理。具体见Maven培训文档
常用的依赖分析命令:
mvn dependency:analyze
mvn dependency:tree
3.生命周期
有三套生命周期:clean,default,site,三个生命周期相互独立
生命周期前后相互依赖
clean:pre-clean -> clean -> post-clean
default:process-resources -> compile -> test -> package ->install ->deploy
site: pre-site -> site ->post-site -> site-deploy
4.多模块
* 可继承的元素
* groupId, artifactId, version. (groupId/artifactId之一必须重写)
* dependencies
* plugins
* dependencyManagement
* pluginManagement
* Reporting
* Developers & Contributors
* 子模块可任意重写父模块配置
* 目的:聚合构建,Maven build父模块的时候,会自动
build子模块
* 父模块的packaging必须为POM
5.测试
唯一的目标surefire:test与生命周期阶段test 绑定
测试报告:${basedir}/target/surefire‐reports
‐ 默认运行的测试类
‐ **/Test*.java
‐ **/*Test.java
‐ **/*TestCase.java
跳过测试
‐ mvn test ‐DskipTests
‐ mvn test ‐Dmaven.test.skip=true (同时跳过编译测试)
‐ 单独运行某个测试
‐ mvn test ‐Dtest=SquareTest
‐ mvn test ‐Dtest=List*Test
‐ mvn test ‐Dtest=SquareTest,List*Test
剔除测试
<excludes>
<exculde>../DAOTest.java</exculde>
</excludes>
6.Maven的版本规范
1 . 3 . 4 ‐beta‐2
<主版本>.<次版本>.<增量版本>‐<限定符>
架构 加功能 修复bug 里程碑版本
--------------------------------
--------Maven常用命令------------
--------------------------------
mvn archetype:create -DgroupId=com.byread -DartifactId=blog
创建普通应用项目
mvn archetype:create -DgroupId=com.byread -DartifactId=blogweb -DarchetypeArtifactId=maven-archetype-webapp
创建WEB项目
mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.2 -DgroupId=com.mycompany.app -DartifactId=myproject
创建appfuse项目
mvn compile
编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时。
mvn test-compile
编译测试代码,compile之后会生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。
mvn test
运行应用程序中的单元测试
mvn site
生成项目相关信息的网站
mvn clean
清除目标目录中的生成结果
mvn package
依据项目生成 jar 文件,打包之前会进行编译,测试。
mvn install
在本地 Repository 中安装 jar。
mvn install -DskipTests=true
忽略单元测试,在本地 Repository 中安装 jar。
mvn eclipse:clean
清除 Eclipse 项目文件及包引用定义
mvn war:exploded
仅有页面文件发生变化时
mvn eclipse:eclipse
生成 Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。
mvn cargo:start
自行去下载相关的jboss这样的服务器,然后启动jboss(刚才mvn package install部署好的目录)
mvn install:install -file -Dfile=D:/opensource/dbunit-2.2/dbunit-2.2.jar -DgroupId=dbunit-DartifactId=junitperf -Dversion=2.2 -Dpackaging=jar
发布到本地
mvn deploy:deploy -file -DgroupId=staticComparison -DartifactId=static-comparison -Dversion=2.0 -Dpackaging=jar -Dfile=c:/staticComparison_2.0.jar -Durl=file:Y:\repo
发布到远程
分享到:
相关推荐
### Maven基础入门教程知识点整理 #### Maven概述 1. **Maven定义与历史** Maven是一个开源项目管理工具,由Apache软件基金会管理。它用纯Java编写,旨在简化Java项目的构建过程以及管理项目生命周期。Maven通过...
**Java Maven基础教程** 在Java开发中,Maven是一个至关重要的工具,它是一个项目管理和综合工具,可以帮助开发者构建、依赖管理和项目信息管理。本教程旨在介绍Maven的基础知识,帮助初学者快速上手并理解其核心...
**Java SpringMVC Maven基础教程** 本教程将深入讲解如何使用Java、SpringMVC和Maven构建一个基础的Web应用程序。SpringMVC是Spring框架的一部分,用于构建强大的、灵活的Web应用,而Maven则是一个项目管理和综合...
Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词 语,代表专家、内行的意思。 一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目...
**Maven基础用法指南** Maven是一款强大的项目管理和构建工具,尤其在Java开发领域广泛使用。它由Apache Jakarta项目开发,旨在简化构建过程并提供高级项目管理功能。相较于Ant,Maven更注重项目的结构化和自动化,...
**Maven基础讲义** Maven,源自于Java社区,是一个项目管理和综合工具,它极大地简化了构建、管理和部署Java项目的过程。Maven通过提供一个标准化的构建过程,使用一个统一的配置方式,使得开发者可以专注于编写...
SpringBoot Maven基础搭建教程 SpringBoot是由Pivotal团队提供的全新框架,其设计目标是用来简化新Spring应用的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz ...
### Maven基础技术知识点详解 #### 一、Maven简介与安装配置 - **Maven**是一种项目管理和构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。它通过一系列标准流程来帮助开发者更高效地完成项目的构建...
【标题】"maven基础类型完整项目.rar"是一个包含有关Maven使用和配置的实践示例,它旨在帮助初学者理解和掌握Maven在Java开发中的基本应用。 【描述】虽然描述中充满了戏谑,但我们可以从中了解到这个项目可能是一...
### MAVEN基础篇-资料整理 #### 第一章 Maven 简介 ##### 1.1 软件开发中的阶段 在软件开发过程中,一个典型的项目生命周期包括多个阶段:初始化、配置管理、源代码管理、编译、测试、打包、验证、部署等。每个...
maven基础学习笔记
《Maven基础使用手册》是针对初学者的一份详尽指南,旨在帮助用户从零开始掌握Maven的基本操作。这份手册以实例与图解相结合的方式,使得学习过程更为直观易懂。 一、获取Maven支持 1. 访问官方网站:在学习Maven...
【Maven基础1】知识点详解 1. Maven概述 Maven是一个强大的项目管理工具,它主要负责管理和构建Java项目。Maven的核心理念是通过Project Object Model(POM)来描述项目,POM是一个XML文件,包含了项目的配置信息...
### Maven 基础知识点详解 #### 一、Maven 概述 1. **概念** - **定义**:Maven 是一个基于项目对象模型(Project Object Model, POM)的软件项目管理和综合工具。 - **核心功能**: - **依赖管理**:自动下载...
【标题】"Maven基础快速学习入门" 在软件开发领域,Maven是一个广泛使用的构建工具,主要用于管理和构建Java项目。它通过提供一个标准化的项目对象模型(Project Object Model,POM),使得项目依赖管理、构建过程...
SpringBoot Maven基础演示项目 Spring Boot是由Pivotal团队开发的一个框架,旨在简化Spring应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如数据源、JPA、定时任务、WebSocket等,极大地提高了...
本教程将深入探讨“Maven基础学习”的第四部分——如何使用Archetype来生成项目骨架,帮助初学者快速搭建项目结构。 一、Maven Archetype简介 Archetype是Maven的一种功能,用于创建项目的初始模板或骨架。它定义了...