SVN:版本控制工具 MAVEN:项目构建工具(ANT、MAKE) MAVEN主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 什么是构建? 项目的编译、运行单元测试、生成文档、打包和部署项目,maven工具只需要一条简单命令,所有繁琐步骤就能够自动完成。 maven的优势 1.跨平台 2.服务于构建,帮组我们自动化构建过程,从清理、编译、测试到生产报告,再到打包和部署。 3.构建标准化 4.依赖管理工具 maven 通过一个坐标系统准确定位每一个构件,maven给这个类库引入了经纬,让它们变得有序。 5.maven对于项目目录结构,测试用例命名方式有既定的规则,只要遵循了这些规则,用户在项目切换时就免去了额外的学习成本,可以说是约定优于配置。 maven安装 maven下载:maven.apache.org 解压后设置m2_home、path参数 pom.xml pom: project object model gav: group artifactId version jar包坐标 描述依赖的jar包标签如下: <?xml version="1.0" encoding="UTF-8"?> <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>com.erayt.xrf</groupId> <artifactId>hello</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies> </project> 目录结构: src/main/java java源码 src/main/resources 项目资源 src/test/java 项目测试码 src/test/resources 项目测试资源 mvn compile(项目编译,将会出现一个target目录) mvn clean (清理编译内容) mvn package(项目打包) mvn install(将项目打包,并放入repository中) 默认仓库Default: ${user.home}/.m2/repository D:\apache-maven-3.6.2\conf\settings.xml种<localRepository></localRepository> 自定义本地仓库 新增Test文件HelloMavenTest.java package cn.sxt; import org.junit.Test; import cn.sxt.HelloMaven; public class HelloMavenTest { private HelloMaven hm = new HelloMaven(); @Test public void testHello(){ hm.hello(); } } 执行mvn test执行测试代码,结果如下: ------------------------------------------------------- TESTS ------------------------------------------------------- Running cn.sxt.HelloMavenTest hello world! Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.107 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 基于项目模块快速创建项目: mvn archetype:generate -DgroupId=com.erayt.maven -DartifactId=MavenT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 根目录下第一个子元素ModelVersion指定当前Pom模型的版本,对于Maven3来说它只能是4.0.0 groupId定义了项目属于哪个组,这个组往往和项目所在组织和公司存在关联,比如com.bjsxt.crm,通常与域名反向一一对应 artifactId定义了当前Maven项目在组中唯一的Id,比如crm-user,为实际项目的一个Maven模块。推荐做法是使用实际项目名称作为artifactId的前缀. 比如spring-bean. Version X.X.X-里程碑 比如1.0.0-SNAPSHOT 第一个X大版本,第二个X小版本,第三个X更新 里程碑版本:SNAPSHOT(开发版) alpah(内部测试) beta(公开测试) Release|RC(发布版) GA(正常版本) 可以使用name标签声明一个对于用户更加友好的项目名称 Packaging: 该元素定义Maven项目的打包方式,通常与文件的扩展名对应。默认为jar,也可以为war,ear。 Classifier: 该元素用来帮组定义构建输出的一些附属构建,比如javadoc和sources.jar 仓库的概念: Maven定义了一组规则,Maven坐标元素包括:groupId,artifactId,version,packaing,classifer.Maven提供了一个 中央仓库,该中央仓库包含了世界上大部分流行的开源项目构建。 mvnrepository.com 可以搜索jar包,查询到jar包的gav MVN根据坐标寻找构件时,先查看本地仓库,若存在则直接使用,否则去仓库查找,发现需要的构件进行下载。若本地以及远程仓库都没有,Maven就报错。 远程仓库分为三种:中央仓库,私服,其他公共库。 中央仓库是默认配置下,Maven下载jar的地方。 私服是另外一种特殊的远程仓库,为了节省宽带和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有的外部远程仓库。 依赖范围 Maven在编译项目主代码时需要使用一套classpath。比如:编译项目代码时需要用到spring-core,该文件以依赖的方式引入classpath中。其次Maven在 执行测试时会使用另外一套classpath。比如junit。 最后在实际运行项目时,又会使用一套classpath。 spring-core需要再该classpaht中,而junit不需要。 maven依赖范围: Compile:编译依赖范围,默认。对于编译,测试,运行都有效。 Test: 测试依赖范围,只有测试的时候需要 Provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试都有效,但在运行时无效。典型的是Servlet-API,编译和测试需要,但在运行时,由于容器已提供,无需重复引用。 Runtime:运行时依赖范围。测试和运行有效,编译无效,典型例子是jdbc渠道,编译只需要jdk提供的jdbc接口,只有在测试或运行时才需要实现上述接口的jdbc渠道。 System: 系统依赖范围,一般不使用。 传递性依赖 传递性依赖,让我们在使用某个jar的时候就不用考虑它依赖了什么,也不用担心引入多余的依赖。Maven会解析各个直接依赖的POM,将那些必要的依赖以传递 依赖的形式引入到当前项目中。 冲突场景1: A->B->C(1.0) A->E->C(2.0) 如果A同时存在两个不用version的C,则第一声明优先,则为C1.0引入。 冲突场景2:A->B->C-D(1.0) A-F-D(2.0) 则为D2.0, 因为路径最近者优先。 排除依赖 在引入一个gav时,想排除某个gav则通过exclusions即可,只需要注明groupid和artifactId,无需写version。因为一个pom中只能依赖一个version的gav <exclusions> <exclusion> <groupid></groupid> <artifactId></artifactId> </exclusion> </exclusions> maven的聚合 当项目模块很多时,每个模块都要编译一下,聚合模块无需包含任何代码,pom中也无需任何依赖。 <packaging>pom</packaging> <modules> <modlue>../user-core</module> //模块 <modlue>../user-dao</module> <modlue>../user-service</module> <modlue>../user-action</module> </modules> 在聚合模块上,直接执行maven install,则会将所有的模块都进行install 继承 用户继承其他pom配置内容,其中编写继承的gav <parent> <groupId></groupId> <artifactId></artifactId> <version></version> </parent> 如何发布web. 项目执行maven package命令,打成war包,放在tomcat下运行即可。
相关推荐
以下是对"Maven常用知识整理"的详细阐述: 1. **项目依赖管理**:Maven通过pom.xml文件来管理项目的依赖关系,使得开发者可以声明项目需要的库,Maven会自动下载并管理这些库。依赖的版本冲突问题,Maven会按照一定...
将maven知识整理为详细的思维导图,均为学习过程中的知识整理,方便记忆和复习,内容非常详尽,建议收藏,也可以根据该导图学习maven相关知识
【标题】"eclipse使用maven整理文档"涵盖了在Eclipse集成开发环境中使用Maven进行项目管理和文档生成的实践知识。Maven是一个强大的Java项目管理工具,它通过配置文件(pom.xml)来管理项目的构建、依赖关系和文档...
### Maven教程整理 #### Maven简介 Maven是一个广泛使用的Java项目构建工具,它不仅能够进行构建,还能有效地管理项目的依赖关系、文档以及整个构建过程。与Ant等其他构建工具相比,Maven的一大特色在于它引入了...
### Maven核心知识点详解 #### 一、Maven配置与运行 **Maven配置**: - **MAVEN_OPTS环境变量**:此变量包含了用于启动运行Maven的Java虚拟机(JVM)的参数。开发者可以通过设置`MAVEN_OPTS`来优化Maven的性能。...
标题"超详细Maven快速入门到精通.txt打包整理.zip"表明这是一个关于Maven的全面教程,涵盖了从基础到高级的各个方面,旨在帮助用户快速掌握Maven的使用。Maven是一个Java项目管理和综合工具,由Apache软件基金会开发...
### Maven基础入门教程知识点整理 #### Maven概述 1. **Maven定义与历史** Maven是一个开源项目管理工具,由Apache软件基金会管理。它用纯Java编写,旨在简化Java项目的构建过程以及管理项目生命周期。Maven通过...
### MAVEN基础篇-资料整理 #### 第一章 Maven 简介 ##### 1.1 软件开发中的阶段 在软件开发过程中,一个典型的项目生命周期包括多个阶段:初始化、配置管理、源代码管理、编译、测试、打包、验证、部署等。每个...
### 华为认证HCIP鲲鹏知识点整理 #### 一、应用执行过程 在华为HCIP鲲鹏认证考试中,考生需要了解应用是如何被构建、打包以及最终在系统上执行的过程。这部分知识点主要通过选择题或者连线题的形式来考察。 **...
SSM框架整合是Java开发中常见的一种技术组合,主要包括Spring...以上就是SSM+maven环境整合的基本流程和关键知识点。实际开发中,还需要考虑日志管理、异常处理、安全性配置、性能优化等方面,使得项目更加健壮和高效。
IntelliJ Idea下Maven插件使用技巧 标签:Idea Maven IntelliJ Idea下Maven插件使用技巧,对于开发人员快速上手,并可能有效提高开发效率,特将此整理分享给大家。
这份"JavaWEB基础知识整理.rar"压缩包提供了一份详细的Java Web开发基础教程,适合初学者和有一定经验的开发者进行复习和巩固。以下是对其中核心知识点的详细解读: 1. **Java Web概述** - Java Web开发主要涉及...
本笔记主要涵盖了Maven的基础知识,包括资料收集、安装指南,特别是针对Linux环境下的Ubuntu系统,以及Maven的一些核心概念和操作。 **一、Maven介绍** Maven通过使用一个标准的目录结构和一个XML文件(pom.xml)来...
Maven入门教程整理,用来介绍Maven的一些基础知识和使用方法。
结合慕客网上视频的学习对maven知识点进行整理汇总。感觉很有用分享给大家
初衷想法:在学习过程中遇到比较有趣的问题、然而花了点心血和时间去整理,然而进行梳理出来一份文章比较完整有知识体系的DevOps自动化构建与部署工程文章,技术知识内容比较多,而且文章内容较长,然而分了几个章程...
下面我们将深入探讨JFinal、Maven以及IntelliJ IDEA在开发过程中的作用和相关知识点。 **JFinal** 是一个基于Java的高效MVC框架,设计目标是简化开发,提高开发效率。JFinal的特点包括: 1. **轻量级**:JFinal...