Maven的几个概念和常用命令

导读:本篇文章讲解 Maven的几个概念和常用命令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

参考Maven官方文档


一、Maven是什么?

Maven是java开发人员比较常用的一个项目管理工具,只需做一些简单的配置,就可以批量完成项目的构建,依赖管理,生成报告和文档等。

Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。

二、Maven的用途

  1. Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
  2. 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
  3. Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
  4. Maven 提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。

三、Maven的几个概念

  1. pom是指project object Model。
  2. pom是一个xml文件,在maven2里为pom.xml。
  3. pom文件是maven工作的基础,在执行task或者goal时,maven会去项目根目录下读取pom.xml获得需要的配置信息
  4. pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等等
  5. 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的操作

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

如果觉得不错,来关注吧

tYkNnK.jpg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/69794.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!