赞
踩
Maven翻译为“专家”、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM),Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理各种项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。
在介绍之前有个故事讲给你听: 假如我们正在开发两个项目(A 和 B),其中A项目中的一些功能依赖于B项目中的某些类,那么该如何来维系这种依赖关系?
有人说: 很简单,我们之前在写程序的时候,需要用什么就把需要的内容导入自己的项目中,导入jar包即可,所以这里也一样,可以将B项目打包成jar包,然后在A项目的Library下导入B的jar文件,这样A项目就可以调用B项目中的某些类了。
但是这样有一个严重的缺陷就是:在开发的过程中,如果发现B有bug那么,我们需要把项目B修复好,然后重新将B打包,并对项目A进行重编译操作。
那我们应该怎么办?
下面就开始介绍Maven
创建管理Java项目
通过maven的pom.xml文件来管理的,需要用到很多的第三方jar(依赖)包。
project | 工程的根标签。 |
modelVersion | 模型版本需要设置为 4.0。 |
groupId | 这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。 |
artifactId | 这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。 |
version | 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如: com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1 |
gav(必须的三个)是针对Maven仓库的jar包给一个编号(导入依赖就是导入jar包)
根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包。
pom.xml获取junit的jar包的编写。
- <dependency>
- <!--通过groupId、artifactId、version三个属性来定位一个jar包-->
- <groupId>junit</groupId>
- <!--groupId:一般为包名,也就是域名的反写-->
- <artifactId>junit</artifactId>
- <!--artifactId:项目名-->
- <version>3.8.1</version>
- <!--所需要jar包的版本-->
- <scope>test</scope>
- <!--此局的意思是该jar包只在测试时使用--
- </dependency>
假如上面的pom文件属于A项目,那么A项目肯定是一个maven项目,通过上面这三个属性就能找到junit对应版本的jar包,那么junit项目肯定也是一个maven项目,junit的maven项目中的pom文件就会有三个标识符,如下代码所示,然后别的maven项目那个通过这三个属性来找到junit项目的jar包了。所以,在每个创建的maven项目时都会要求写上这三个属性的值。
在 Maven 的术语中,仓库是一个位置(place)。
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 仓库有三种类型:
Java Project ——> GAV Maven坐标——>Maven中央(远程)仓库(国外 )国外的下载有防火墙 下载慢 所以中国就做了一个镜像的远程仓库(Alibaba 网易 清华 )——>downliad(下载).jar——>本地仓库——> Java Project
本地仓库就是中央仓库的一个镜像
如果有就去本地仓库找 没有就去中央仓库下载
这里可以看到你是从什么仓库下载jar包的
maven 会默认从maven官方提供的服务器下载jar包。而官方服务器在国外,网速很慢,而且容易卡断。 为了便于快速下载相关jar包,可以使用国内maven 阿里云的下载地址。修改
修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:
- <mirrors>
- <mirror>
- <id>alimaven</id>
- <name>aliyun maven</name>
- <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
- <mirrorOf>central</mirrorOf>
- </mirror>
- </mirrors>
第二步: pom.xml文件里添加:
- <repositories>
- <repository>
- <id>alimaven</id>
- <name>aliyun maven</name>
- <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
针对一个的生命周期 定义了很多的抽象环节 然后用一个一个插件具体实现抽象的环节
每一个环节都有一个plugins 都是通过plugins
对于生命周期的管理
使用这些生命周期的时候 当点击的时候越往下点上面的都会跟着执行
所有的包都是用jar打的,只不过目标文件的扩展名不一样。
WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的.
它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。
这里扩展一个包:ear包 企业级应用,通常是EJB打成ear包。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。