maven心得

合集下载

maven的学习总结

maven的学习总结

maven的学习1maven 的介绍从字面解释maven是知识渊博、经验丰富的专家或怪才的意思。

深入研究和使用maven,确实让人感到它确实沉淀了Java项目构建领域中的丰富知识和经验,并以一种高度可复用的形式出现在你的面前。

maven的开发者在他们开发网站上指出,maven的目标是要使得项目的构建更加容易,它把编译、打包、测试、发布等开发过程中的不同环节有机的串联了起来,并产生一致的、高质量的项目信息,使得项目成员能够及时地得到反馈。

maven有效地支持了测试优先、持续集成,体现了鼓励沟通,及时反馈的软件开发理念。

如果说Ant的复用是建立在"拷贝--粘贴"的基础上的,那么Maven通过插件的机制实现了项目构建逻辑的真正复用。

2maven的环境搭建首先去官方网站下载之:/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.zip,我选择的是截至目前最新版本maven2.2.1版本2.1设置环境变量:Maven2下载完后,我将其解压到我的计算机的D:\javatools\apache-maven-2.2.1下,目录结构如下:环境变量:我的电脑----属性----高级----环境变量,点击“系统变量”下的新建,输入:变量名MAVEN_HOME; 变量值D:\javatools\apache-maven-2.2.1,在系统变量列表中找到系统变量path,打开之,在变量值中追加”;%MAVEN_HOME%\bin”,至此环境变量设置完毕。

检查一下是否已经完成安装,打开dos窗口,输入mvn –v,如果出现以下信息则表示maven2已经安装成功:2.2本地仓库配置:D:\javatools\apache-maven-2.2.1\conf目录下的setting.xml文件中修改两处:第一处:修改为自己对应的本地仓库目录:第二处:修改为:sky-mobi公司己经有架设一台mavan仓库,供大家使用3Maven生命周期4常用的Maven命令1. 创建Maven的普通java项目:mvn archetype:create -DgroupId=packageName -DartifactId=projectName2. 创建Maven的Web项目:Mvn archetype:create -DgroupId=packageName -DartifactId=webappName –DarchetypeArtifactId = maven-archetype-webapp3. 编译源代码:mvn compile4. 编译测试代码:mvn test-compile5. 运行测试:mvn test6. 产生site:mvn site7. 打包:mvn package8. 清除产生的项目:mvn clean9. 生成eclipse项目:mvn eclipse:eclipse,生成idea项目mvn idea:idea 这年头现在先进了,不用运行也能导入idea工具上了。

Maven_学习总结_全

Maven_学习总结_全

29_maven_初步(由于中央仓库无法访问,该部分稍微有些乱)1. 如果使用Ant分模块的管理时,依赖的管理不是很好操作;maven可以解决这个问题;2. 配置:将maven的bin目录加入到环境变量path中:例如:3. 命令:查看maven版本:mvn -version4. pom.xml中几个最基本的元素:①groupId:项目的项目组,和包名一致②artifactId:标识项目中的模块,建议使用项目名称-模块名称例如:project-module③version:版本,其中,快照版本,是一种特殊的版本④modelVersion 固定值4.0.0⑤pom.xml示例:<modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven.hello</groupId><artifactId>hello-first</artifactId><version>0.0.1-SNAPSHOT</version>5. maven中的路径的约定俗成:①java文件放在src/main/java目录中②test文件放在src/test/java目录中6. 进入pom.xml所在的目录,执行mvn compile,可编译项目7. 执行mvn test命令,可执行单元测试8. 执行mvn clean命令,可清除产生的项目,默认清理target目录中的数据9. 执行mvn package命令,可以打包10. 执行mvn install命令,可打包,并将该包放入本地仓库中11. 添加依赖:<dependencies><dependency><groupId>com.itmuch.maven.hello</groupId><artifactId>hello-first</artifactId><version>SNAPSHOT-0.0.1</version></dependency></dependencies>12. maven的优势:可以在不同的项目之间,有效地进行项目的管理30_maven_初步_思路讲解和archetype的使用和eclipse的安装1. 执行maven deploy命令,可发布到私服中2. 执行maven archetype:genarate命令,可自动创建项目3. 使用Eclipse开发maven项目①不要使用Eclipse自带的maven,而应该用自己的maven,配置方法:Window - Preferences - Maven - Installations - 选择自己的maven的路径②选择settings.xml文件,配置方法:Window - Preferences - Maven - User Settings - 选择settings.xml文件③新建项目:右击- New - Other - Maven Project - 选择创建31_maven_依赖_环境搭建和依赖的范围1. maven的三大块内容:依赖、仓库、生命周期和插件2. 依赖通过坐标来进行查找的(GAV-->groupId、artifactId、version )3. 有一些网上的仓库提供了坐标的查询:例如:①②/nexus/4. 中央工厂:maven/lib/maven-model-build.jar中的maven-model-builder-3.2.1.jar中:org\apache\maven\model\pom-4.0.0.xml配置的<repository><id>central</id><name>Central Repository</name><url>/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository>5. 依赖的传递性:①依赖是会被传递的,例如:A依赖C,B依赖A,那么B就自动依赖C(这种依赖是基于compile这个作用域来进行传递的,如果指定了scope是test,那么依赖并不会传递到另一个项目的compile包中去)②对于依赖的传递而言,主要是针对compile作用域传递6. 依赖的范围:①test范围指的是测试范围有效,在编译和打包时,都不会使用这个依赖②compile范围指的是编译范围有效,在编译、打包时都会将依赖存储进去【默认】③provided范围指的是在编译和测试的过程有效,最后生成war包时不会加入,例如servlet-api,因为tomcat等web服务器已经存在了,如果再打包会冲突④runtime在运行时会依赖,在编译的时候不依赖(不常见)⑤import⑥system32_maven_依赖_传递性依赖的冲突的问题1. 传递性依赖的冲突问题:①a-->b1.0 c-->b1.1 d-->a和c,此时:在d的pom中,哪一个依赖先写,就使用先写依赖的版本示例:如果d的pom中:<dependency>a</dependency><dependency>c</dependency>那么,d所依赖的b的版本是b1.0②a-->b1.0 c-->b1.1 d-->a和c f-->d和c,如果路径的长短不一致,就选最短路径分析:d-->a和c,可由①中规则推出:d-->b1.0;本例中,f找到b的路径分别是:f-d-a-b和f-c-b所以本例中,f-->b1.1 2. 如果希望精确控制依赖包,可以使用依赖的排除功能进行控制:33_maven_依赖_继承和聚合1. 聚合的优势:可以在一个地方编译多个pom文件;示例:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven</groupId><artifactId>maven-parent</artifactId><version>0.0.1-SNAPSHOT</version><!-- 聚合时,必须用pom --><packaging>pom</packaging><!-- 使用modules元素,聚合其他项目 --><modules><!-- 被聚合的项目的路径 --><module>../maven-dao</module><module>../maven-service</module></modules></project>2. 继承:①父pom.xml:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.itmuch.maven</groupId><artifactId>maven-parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><url></url><!-- 定义properties,可使用${名称}来调用,例如:${junit.version} --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><junit.version>4.10</junit.version></properties><!-- 使用dependencyManagement,可对依赖进行管理。

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深入理解maven灵活的构建

Maven学习总结(17)——深⼊理解maven灵活的构建⼀个优秀的构建系统必须⾜够灵活,应该能够让项⽬在不同的环境下都能成功构建。

maven为了⽀持构建的灵活性,内置了三⼤特性,即:属性、profile和资源过滤。

1、maven属性maven属性分6类:1、内置属性:如${basedir}表⽰项⽬根⽬录,${version}表⽰项⽬版本2、POM属性:⽤户可以引⽤pom⽂件中对应的值。

如:${basedir} 项⽬根⽬录${project.build.directory} 构建⽬录,缺省为target${project.build.outputDirectory} 构建过程输出⽬录,缺省为target/classes${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}${project.packaging} 打包类型,缺省为jar${project.xxx} 当前pom⽂件的任意节点的内容3、⾃定义属性:⽤户可以在pom的<properties>元素下⾃定义maven属性。

4、setting属性:⽤户可以使⽤以settings开头的属性引⽤settings.xml中xml元素的值,如${settings.localRepository}指向⽤户本地仓库的地址。

5、java系统属性:maven可以使⽤当前java系统的属性,如${user.home}指向了⽤户⽬录。

6、环境变量属性:所有环境变量都可以使⽤以env.开头的属性。

如:${env.JAVA_HOE}。

2、资源过滤这⾥所谓的资源:也就就是指src/main/resources和src/test/resources⽂件下的所有⽂件,默认情况下,这些⽂件会被复制到classpath下⾯,即target/classes下⾯。

所谓资源过滤,就是过滤这些⽂件夹下⾯的⽂件⾥⾯的内容,看⾥⾯的maven变量是否需要替换。

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔记之Maven的生命周期和插件

Maven3实战笔之Maven的生命周期和插件1.Maven的生命周期Maven的生命周期其实是指它对所有的构建过程进行了反复的推敲、反思,之后总结了一套高度抽象过程。

这个过程是高度完善的、容易扩展的。

基本上包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、、站点生成等步骤,几乎所有的项目生命周期也就这样。

Maven项目周期是一个抽象的概念,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体细节它不管。

具体的实现细节则交给了Maven的各个丰富的插件。

Maven的插件机制有可能是跟Eclipse学的,基于一个内核core,定义一堆流程性的东西,让插件去实现这些规范。

其他组织也可以根据这套规范插入自己的东西,形成有特色化的、自定制的Maven。

Maven有三套相互独立的生命周期,分别是:clean、default、site。

clean主要是清理项目、default是Maven最核心的的构建项目、site是生成项目站点。

每一个大的生命周期又分为很多个阶段。

后面的阶段依赖于前面的阶段,这点有点像Ant的构建依赖。

生命周期本身相互独立,用户可以仅仅调用生命周期的某一个阶段,也就是说用户调用了default周期的任何阶段,并不会触发clean周期以及site周期的任何事情。

2.Maven生命周期阶段详解3大生命周期蕴含着小小的阶段,我们按顺序看一下clean周期:pre-clean:准备清理clean:真正的清理工作post-clean:执行清理后的一些后续工作default周期:validate:验证initialize:初始化配置generate-sources:生成源代码编译目录process-sources:处理项目主资源文件,复制资源文件到outputclasspathgenerate-resources:生成资源目录process-resources:处理资源文件complie:编译源代码process-classes:处理编译后文件generate-test-sources:生成测试目录process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath generate-test-resources:生成测试资源文件process-test-resources:处理测试资源文件test-compile:编译测试代码process-test-classes:处理测试代码test:单元测试运行测试代码prepare-package:打包前的准备package:将编译好的代码打包成为jar或者war或者ear等等pre-integration-test:准备整体测试integration-test:整体测试post-integration-test:为整体测试收尾verify:验证install:安装到本地Maven库deploy:将最终包部署到远程Maven仓库site周期:pre-site:准备生成站点site:生成站点及文档post-site:站点收尾site-deploy:将生成的站点发布到服务器上就是执行了整个default生命周期这个就是执行了clean周期的前两个阶段、default周期的所有阶段、site周期的所有阶段。

Maven学习总结

Maven学习总结

Maven学习总结(一下红色字体表示重要信息或者自己写的备注)1.maven的安装。

1.需要安装JDK,使用java -version查看,或者使用javac确认。

2./download.html3.网站下载最新版本的maven。

4.window系统,需要配置环境变量:M2_HOME=c:/Program Files/maven-2.0.9PATH=%PATH%;%M2_HOME%/bin5.使用mvn -v命令查看mvn是否已经正确安装2.maven help命令。

1.help:active-profiles :列出当前构建中活动的Profile(项目的,用户的,全局的)。

2.help:effective-pom :显示当前构建的实际POM,包含活动的Profile。

3.help:effective-settings :打印出项目的实际settings, 包括从全局的settings 和用户级别settings 继承的配置4.help:describe :描述插件的属性。

它不需要在项目目录下运行。

但是你必须提供你想要描述插件的groupId 和artifactId。

3.创建一个maven项目。

(在dos环境下用命令新建了一个项目)我们用最基本的archetype 来创建一个入门项目的骨架。

这个插件的前缀是―archetype‖,目标为‖create‖。

命令行中输入:C:/Documents and Settings/Administrator>mvn archetype:create-DgroupId=cn.vicky.maven.ch01 -DartifactId=simple -DpackageName=cn.vicky.maven 将在C:/Documents and Settings/Administrator文件夹下创建,一个simple文件夹。

且会,自动创建一个App.java的文件!simple/simple/pom.xml/src//src/main//main/java/src/test//test/javaMaven Archtype 插件创建了一个与artifactId 匹配的目录——simple。

maven学习总结

maven学习总结

目录1. 安装maven (1)2. Maven使用 (1)2.1 编写pom (1)2.2 根据pom.xml中的配置,新建各种包名 (3)2.2.1 源代码的默认结构如下:src/main/java (3)2.2.2 测试代码的默认结构如下:src/test/java (3)2.3 相关命令 (4)3. 使用Archetype生成项目骨架 (4)4. 在eclipse中安装m2e (4)5. 依赖范围 (5)。

......................................................................................................... 错误!未定义书签。

1.安装maven下载安装包,解压缩后,将安装包/bin添加到环境变量path中验证是否安装成功:mvn –vPom.xml—配置文件—重要运行mvn help:system,打印出java系统属性和环境变量。

用户目录:C:\User\fang\.m2将maven安装目录中的conf/settings.xml文件复制到~/.m2/settings.xml说明:安装目录中的settings文件是全局范围的,若修改整台机器上所有用户都会直接受到影响。

后者是用户范围的,只有当前用户会受到影响。

2.Maven使用2.1编写pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sunfangfang.mvnbook</groupId><artifactId>helloworld</artifactId><version>1.0-SNAPSHOT</version><name>Maven Hello World Project</name><packaging>war</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.sunfangfang.mvnbook.helloworld.Hello World</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>2.2根据pom.xml中的配置,新建各种包名2.2.1源代码的默认结构如下:src/main/java在默认结构下新建com/sunfangfang/mvnbook/helloworld文件夹在helloworld文件夹下新建java文件,如下package com.sunfangfang.mvnbook.helloworld;public class HelloWorld{public String sayHello(){return "Hello Maven!";}public static void main(String[] args) {System.out.println(new HelloWorld().sayHello());}}2.2.2测试代码的默认结构如下:src/test/java在默认结构下新建com/sunfangfang/mvnbook/helloworld文件夹在helloworld文件夹下新建java文件,如下package com.sunfangfang.mvnbook.helloworld;import static org.junit.Assert.assertEquals;import org.junit.Test;public class HelloWorldTest{@Testpublic void testSayHello(){HelloWorld helloWorld = new HelloWorld();String result = helloWorld.sayHello();assertEquals("Hello Maven!",result);}}2.3相关命令mvn clean compilemvn clean testmvn clean packagemvn clean install命令的依赖关系:执行test之前会先执行compile,执行package前会执行test,执行install前会执行package。

Maven最佳实践:Maven仓库

什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。

每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复。

重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘资源的浪费,也使得版本的一致性管理变得困难。

此外,如果你使用版本管理工具,如SVN(你没有使用版本管理工具?马上试试SVN吧,它能帮你解决很多头疼的问题),你需要将大量的jar文件提交到代码库里,可是版本管理工具在处理二进制文件方面并不出色。

Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。

此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。

你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven 仓库,供所有成员使用。

简言之,Maven仓库能帮助我们管理构件(主要是JAR)。

本地仓库vs. 远程仓库运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。

如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

比如说,你的项目配置了junit-3.8的依赖,在你运行mvn test的时候,Maven需要使用junit-3.8的jar 文件,它首先根据坐标查找本地仓库,如果找到,就直接使用。

如果没有,Maven会检查可用的远程仓库配置,然后逐个尝试这些远程仓库去下载junit-3.8的jar文件,如果远程仓库存在该文件,Maven会将其下载到本地仓库中,继而使用。

idea maven实验总结

idea maven实验总结
在本次实验中,我们学习了如何使用idea maven进行项目管理和构建。

通过使用maven,我们可以方便地管理项目依赖、构建和打包项目。

同时,maven还提供了许多插件,可以帮助我们完成各种任务,如测试、发布等。

在实验中,我们首先学习了如何创建一个maven项目。

通过创建一个新的maven项目,我们可以快速创建一个包含基本依赖关系的项目结构。

然后,我们学习了如何添加和管理项目依赖。

通过使用maven 的依赖管理功能,我们可以轻松地添加和删除项目依赖,而不必手动下载和配置依赖项。

接下来,我们学习了如何使用maven进行项目构建和打包。

通过使用maven的命令行工具或在idea中执行maven命令,我们可以快速构建和打包项目。

这可以大大简化我们的项目构建过程,并确保我们的项目能够正确地构建和运行。

最后,在实验中,我们还学习了如何使用maven插件来完成各种任务。

例如,我们学习了如何使用maven-surefire插件来运行单元测试,以及如何使用maven-release插件来发布项目版本。

总的来说,本次实验让我们更好地了解了如何使用idea maven 进行项目管理和构建。

通过使用maven,我们可以方便地管理项目依赖和构建项目,并确保项目能够正确地构建和运行。

- 1 -。

maven3实战读书笔记

Maven简介是什么?Is a software project management and comprehension tool.项目管理工具是基于POM概念(工程对象模型)[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复][与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]功能:1)规范构建系统,项目构建,自动化(标准化)构建→构建工具(清理、编译、测试、生成报告、打包、部署),而且是跨平台的。

抽象构建过程,提供构建任务实现。

2)依赖管理:[在这开源的年代里,几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。

随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。

Maven提供了一个优秀的解决方案:]通过一组坐标maven 能够找到任何一个Java类库。

3)项目信息管理:管理原本分散在各个角落的项目信息:项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址。

4)自动生成项目站点,获得项目文档、测试报告、静态分析报告、源码版本日志报告。

5)中央仓库:提供一个免费的中央仓库,在其中集合可以找到任何的流行开源类库。

通过一些Maven的衍生工具(如Nexus),可以对其进行快速地搜索。

只要定位了坐标,Maven 就能够帮我们自动下载。

/maven2/相关内容:1)maven的安装、配置、基本使用2)坐标和依赖、中央仓库、maven仓库、生命周期、插件、聚合与集成3)nexus建立私服、使用maven进行测试、使用Hudson进行持续集成、4)使用maven构建web应用、maven的版本管理、maven的灵活构建、生成项目站点和maven的m2eclipse插件5)maven和archetype插件Java领域构建管理的解决方案发展:IDE→Make|Ant+Ivy→Maven================================================ 参考官方document:“/guides/index.html”几乎都能找到。

《Maven实战》学习笔记(5)

《Maven实战》学习笔记(5)普通来说,项目的配置文件都在resources下面,默认maven会从下面路径查找资源文件,这是超级pom中的配置 resources resource directoryF:\maven_workspace\workspace\piaoyi\service\src\main\resource s /directory /resource /resources testResourcestestResource directoryF:\maven_workspace\workspace\piaoyi\service\src\test\resource s /directory /testResource /testResources 可以将不同环境的配置,通过属性定义的方式配置在pros中(pom),然后在项目配置文件中用法这些mavne属性,在构建不同的环境时,通过激活不同的frofile来打算用法哪个环境的配置,比如(该profiles不能被子项目继承,只对当前pom项目有效,所以推举配置在tings中): profiles profile dev /id properties db.driver com.mysql.jdbc.Driver /db.driver db.urljdbc:mysql://localhost:3306/test /db.url /properties/profile profile id test /id properties db.driver com.mysql.jdbc.Driver /db.driver db.urljdbc:mysql://192.168.0.10:3306/test /db.url /properties /profile /profiles 同时,需要在pom中的修改资源配置(定义在聚会项目中即可,可以被继承),如下,增强在pom中: build resources resource directory${project.basir}\src\main\resources /directory filtering ue /filtering /resource /resources testResources testResource directory ${project.bair}\src\test\resources /directory filtering true /filtering /testResource/testResources /build 然后在执行构建时,执行如下: n clean install -Pdev 激活该profile 也可以在settings.xml中举行配置,第1页共2页。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

maven使用经验与心得整理
概述
日常开发中,我们用到的maven相关功能大概一下几种:
1、管理jar依赖
2、构建项目(打包、编译等)
3、发布项目(共享、上传至服务器、供他人使用)
简单介绍
1、管理依赖
jar一般在pom.xml文件的中配置,以spring core为例,一般格式如下:
其中groupId一般为项目(jar war pom等)的发布机构名称;
artifactId为项目名称;
version为项目版本;
在项目编译打包的时候,ide会自动到maven仓库去查找相应的jar文件,打包并存放在项目的相应路径下(如web项目的lib目录下)
2、构建项目:
这里所说的构建项目主要指打包、编译、运行测试用例等操作,即maven的生命周期中的打包过程。

最常用的就是compile了,一般项目修改代码以后都要重新编译,然后加载到tomcat中运行调试。

其它的还有clean、package等比较常用的操作,请见详细说明–生命周期部分
3、发布项目:
如果我们写一些通用框架,或者自己封装了一些常见的工具类,想要打包为jar并且供他人使用,那么我们可以通过maven发布到公共仓库(私服)供他人下载依赖使用。

比如每个公司都会有自己的框架,持久层、控制层或者其它功能等。

当我们没有使用maven 的时候,我们是直接把别人的jar拷贝到项目的library目录下,而现在我们有了maven就不用自己到处拷贝jar包了,只需要在发布的时候找到别人发布到仓库时候写的groupId artifactId version等信息就能直接添加依赖了,也就是相当于第一步的依赖管理。

4、多模块
maven实际上通过多模块的思想来组织依赖的,每一个项目或者jar都是一个模块,我们可以把一些通用的,不常变动的东西写在一些指定的模块下,在另外一个项目中引用依赖(这里就有点类似【1、依赖管理】,这样一来可以让项目结构更清晰、方便别人依赖使用,如果项目都是一个模板,也可以复用等等
4、生命周期
maven将项目的生命周期大致分为9个,分别为:clean、validate、compile、test、package、verify、install、site、deploy
我经常用的也就是clean、compile、package、install、deploy,而且deploy相对也较少,因为很少发布公共的项目供别人依赖使用,基本也就是项目打包为war时候会打包到私服,运维人员可以到私服上直接下载对应版本。

其中clean即清除项目中编译文件和本地仓库中已打包的文件(即本地install的文件,install 后面讲到)
compile即编译项目中的java文件,并存放在项目的编译目录(根据不同的配置,编译目录也不一样)
test 即运行项目中的测试用例文件,如果测试用例未通过,也会打包失败,另,这里的test 过程可以在pom中通过配置跳过。

(想想也是,我项目都好了,其实不是非要跑测试用例的)
package 即将本地编译好的文件打包为war 或者jar(这是最常见的两种,其他相关自行了解) verify 我很少用到,没怎么了解过
install 将打包的代码存放到本地maven仓库,可供本地其它项目依赖使用
site生成项目报告,站点,发布站点,这个也很少用到,不是很清楚
deploy 将打包在本地仓库中的项目发不到服务器,供他人依赖使用。

相关文档
最新文档