一、Maven是什么?
Maven是java开发人员比较常用的一个项目管理工具,只需做一些简单的配置,就可以批量完成项目的构建,依赖管理,生成报告和文档等。
Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。
二、Maven的用途
- Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
- 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
- Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
- Maven 提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。
三、Maven的几个概念
- pom是指project object Model。
- pom是一个xml文件,在maven2里为pom.xml。
- pom文件是maven工作的基础,在执行task或者goal时,maven会去项目根目录下读取pom.xml获得需要的配置信息
- pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等等
- pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom
pom文件中节点含义如下:
节点 | 含义 |
---|---|
roject | pom文件的顶级元素 |
modelVersion | 所使用的object model版本,为了确保稳定的使用,这个元素是强制性的。除非maven开发者升级模板,否则不需要修改 |
groupId | 是项目创建团体或组织的唯一标志符,通常是域名倒写,如groupId org.apache.maven.plugins就是为所有maven插件预留的 |
artifactId | 是项目artifact唯一的基地址名 |
packaging | artifact打包的方式,如jar、war、ear等等。默认为jar。这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle |
version | artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本 |
name | 表示项目的展现名,在maven生成的文档中使用 |
url | pom文件的顶级元素 |
description | 表示项目的地址,在maven生成的文档中使用 |
dependencies | 表示依赖,在子节点dependencies中添加具体依赖的groupId artifactId和version |
build | 表示build配置 |
parent | 表示父pom |
项目根目录下「pom.xml」的典型结构:
<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> <!-->maven版本</-->
<groupId>com.zwl.template</groupId> <!-->项目的包名</-->
<artifactId>demo-module</artifactId> <!-->模块名</-->
<version>1.0.0-SNAPSHOT</version> <!-->版本</-->
<packaging>jar</packaging>
<name>demo-module</name>
<url>http://maven.apache.org</url>
<!--版本控制 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依赖项 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
<!-- 排除依赖传递列表 -->
<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>
</project>
maven坐标的概念
-DgourpId = 组织名,公司网址的反写 + 项目名称
-DartifactId = 项目名-模块名
-Dversion = 版本号
-Dpackage = 代码所在的包名
坐标: ${groupId}:${artifactId}:${packaging}:${version}
通过maven坐标可以唯一确定一个项目,比如 com.firefoxbug.www:HelloWorld:jar:1.0-SNAPSHOT
- maven 查找jar包依赖的坐标的网址:
http://mvnrepository.com/ (推荐)
http://search.maven.org/
http://repository.sonatype.org/content/groups/public/
四、Maven的操作
1. 常用maven命令
1. mvn compile 编译源代码
2. mvn test-compile 编译测试代码
3. mvn test 运行测试
5. mvn package 打包,根据pom.xml打成war或jar
如果pom.xml中设置 war,则此命令相当于mvn war:war
如果pom.xml中设置 jar,则此命令相当于mvn jar:jar
6. mvn -Dtest package
打包但不编译test例子:mvn package -Dmaven.test.skip=true
打包、编译但是不运行test例子: mvn package -DskipTests
7. mvn install 在本地Repository中安装jar
8. mvn deploy 发布项目到远程仓库
9. mvn clean 清除产生的项目
10. mvn eclipse:eclipse 生成eclipse项目
11.mvn idea:idea 生成idea项目
12.mvn eclipse:clean 清除eclipse的一些系统设置
13.mvn dependency:tree 显示maven依赖树
14.mvn dependency:list 显示maven依赖列表
15.mvn dependency:sources 下载依赖包的源码
16.mvn install:install-file -DgroupId=packageName -DartifactId=projectName -Dversion=version -Dpackaging=jar -Dfile=path 安装本地jar到本地仓库
2. web项目相关命令
启动tomcat:mvn tomcat:run
启动jetty:mvn jetty:run
运行打包部署:mvn tomcat:deploy
撤销部署:mvn tomcat:undeploy
启动web应用:mvn tomcat:start
停止web应用:mvn tomcat:stop
重新部署:mvn tomcat:redeploy
部署展开的war文件:mvn war:exploded tomcat:exploded
如果觉得不错,来关注吧
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/69794.html