Maven总结
项目管理构建工具:maven ant gradle ==
项目管理利器(Maven)——maven介绍及环境搭建
maven可以帮助我们更有效地管理项目,它也是一套强大的自动化构建工具,覆盖了编译、测试、运行、清理、打包和部署等整个项目周期。它提供了一个仓库的概念,统一帮助我们管理项目所依赖的第三方jar包,最大地避免了由于运行环境配置的不同而引起的问题。
1、目录结构:
boot目录:包含一个类加载器框架。
bin目录:包含mvn的运行脚本。
confing目录:包含配置文件。
lib目录:包含mvn使用的类库。
2、配置环境变量:
M2_HOME maven主目录
path 添加 ;%M2_HOME%\bin
3、检测安装:cmd: mvn -v
pom文件简述:
pom.xml:(从struts-core的jar包中的maven中找到)
①.<modelVersion>:maven版本。
②.<groupId>:项目的包名。
③.<artifactId>:模块名(有时候建议是项目名)。
④.<version>:0.0.1SNAPSHOT快照版本
在cmd中运行项目:(先进入项目所存放的目录)
①mvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的第三方插件和maven所依赖Jar,可能会比较费时
已有的maven项目部署到新环境上时,执行mvn compile命令,自动下载(如依赖其他工程类,可以在相应的目录下用install创建jar)相关的Jar (老办法是需要对所依赖的Jar坐下改动,触发自动下载。)
②mvn test 运行应用程序中的单元测试
会生成target文件夹,主程序编译的字节码文件在classes下面,测试程序放在test-classes下,surefire-reports文件夹下面存放是的所生成的测试报告
③mvn package 会在target目录下生成一个maven01-model-0.0.1SNAPSHPT.jar
项目管理利器(Maven)——常用的构建命令
1. mvn -v 版本。
2. mvn compile 编译。
3. mvn test 测试。
4. mvn package 打包。
5. mvn clean 清除maven生成的target目录。
6. mvn install 将生成的jar安装到本地仓库中。
maven编译代码的流程:
1. 执行mvn compile 命令编译java代码文件;
2. 如果发现代码中引用到了其他的包文件(jar包);
3. 首先回去核心配置文件pom.xml文件中去查找相应的配置依赖;如图dependency中
4. 根据配置依赖先去本地的仓库中查找jar包资源;(可以在相应的目录下用install创建)
5. 如果本地不存在,则会再去联网到maven的中央仓库中查找。
Maven创建目录的两种方式:(archetype自动创建目录骨架)
1.archetype:generate 按照提示进行选择。
2.archetype:generate -DgourpId=组织名,公司网址的反写+项目名称
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所在的包名
项目管理利器(Maven)——maven中的坐标和仓库
1、坐标。
2、构件通过坐标作为其唯一标识。
3、仓库:
-本地仓库。
-远程仓库:maven-model-builder-3.3.3.jar\org\apache\maven\model,超级pom.xml文件(其他pom均继承此pom),全球中央仓库地址:https://repo.maven.apache.org/maven2
-镜像仓库:/conf/setting文件:
(一旦指定了镜像仓库,所有针对原仓库的访问都会转到镜像仓库,原仓库将不能直接访问)
<mirror>
<id>maven.net.cn</id>(该镜像仓库的ID)
<mirrorOf>central</mirrorOf>(为哪个仓库配置镜像--central为默认仓库--也可以使用通配符*匹配所有仓库)
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
4、修改本地仓库的位置:<localRepository>D:/Maven/repository</localRepository>
项目管理利器(Maven)——maven的生命周期和插件
Maven的生命周期大概如下:
clean compile test package install
这几个命令对应了一个项目的完整的构建过程,这几个步骤对应的都有插件来完成:
清理、编译、测试、打包、集成测试、验证、部署
Maven的生命周期分为三个独立的生命周期(每一个生命周期有分为若干个阶段,其中defaul是最核心的一个):
1. clean 清理项目
2. default 构建项目
3. site 生成项目的站点
1、clean 清理项目:
pre-clean :执行清理前的工作
clean:清理上一次构建生成的所有文件
post-clean:执行清理后的文件
2、default构建项目(最核心)
compile test package install
3、site 生成项目站点
pre-site 在生成项目站点之前要完成的工作
site 生成项目的站点文档
post-site在生成项目站点后要完成的工作
site-deploy发布生成的站点到服务器上
注意:Maven的生命周期对应的命令是顺序执行的,如果没有人为的顺序的一个个执行,那么Maven会默认的自动运行。
clean package 执行某个阶段时前面的阶段会自动运行
阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。
控制在哪个阶段运行执行程序
(自动化测试代码运行在指定阶段)
以下这段pom信息是否可以控制代码在指定阶段运行???
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<name>项目的描述名</name>
<url>项目的地址</url>
<description>项目描述</description>
<developers>开发人员信息</developers>
<licenses>许可证信息</licenses>
<!-- 依赖列表 -->
<dependencies>
<!-- 依赖项 -->
<dependency>
<!-- 坐标 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>依赖的范围</scope>(只在依赖的范围内有用,PS:junit如果此处为test,则只在测试的依赖范围内有用,如在主代码引用junit类则报错)
<optional>设置依赖是否可选,默认是false(子项依赖继承),如为true子项必须显示引入该依赖</optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理,并不会被运行(不会引用到实际的依赖),一般定义在父模块中,由子模块去继承 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!-- 对构建行为提供相应的支持 -->
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<!-- 指定坐标 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 一般在子模块中指定所继承的父模块 -->
<parent></parent>
<!-- 模块列表 -->
<modules>
<module></module>
</modules>
Maven总结的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- spring maven pom.xml设置
spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- maven依赖查询地址
http://search.maven.org/#search%7Cga%7C1%7C
- maven 中snapshot版本和release版本的区别
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
随机推荐
- LLVM 笔记(三)—— 了解传统编译器设计
ilocker:关注 Android 安全(新手) QQ: 2597294287 传统的静态编译器 (如大多数的 C 语言编译器) 通常将编译工作分为三个阶段,分别由三个组件来完成:前端.优化器和后端 ...
- 将Apache手动安装成Windows的服务
将Apache手动安装成Windows的服务 可以选择在安装Apache时自动将其安装为一个服务.如果选择"for all users",那么Apache将会被安装为服务. 如果选 ...
- 【转帖】嵌入式4412开发板QT5.7编译安装到arm
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...
- markdown编辑器
经过一番探索终于找到两个可以实时预览的markdown编辑器 一,sublime text 3 + MarkDown Editing + OmniMarkupPreviwer 安装方法网上均有,这里要 ...
- [Template]高精度模板
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
- POJ2794 Double Patience[离散概率 状压DP]
Double Patience Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 694 Accepted: 368 Cas ...
- Ubuntu14.0下安装Zend Framework 2
Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...
- python_爬虫一之爬取糗事百科上的段子
目标 抓取糗事百科上的段子 实现每按一次回车显示一个段子 输入想要看的页数,按 'Q' 或者 'q' 退出 实现思路 目标网址:糗事百科 使用requests抓取页面 requests官方教程 使用 ...
- C#怎么遍历一个对象里面的全部属性?
比如我现在有一个Student的对象,里面有属性stuName,stuAge,stuGender,我现在该怎么写循环才能遍历这几个属性? Student s=new...... foreach (Sy ...
- Spring源码分析——BeanFactory体系之抽象类、类分析(一)
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactor ...