首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >初识maven

初识maven

作者头像
写代码的猿
发布2019-04-11 14:15:09
发布2019-04-11 14:15:09
6150
举报
文章被收录于专栏:平凡少年平凡少年

Maven是什么?


Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。 我们经常用的就是jar包的管理。

Maven POM


POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。

代码语言:javascript
复制
<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>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version>
    <packaging>jar</packaging>
</project>

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

节点

描述

project

工程的根标签。

modelVersion

模型版本需要设置为 4.0。

groupId

这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。

artifactId

这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。

version

这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如: com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1

packaging

项目打包的类型,可以使jar、war、rar、ear、pom,默认是jar

dependencies和dependency

  前者包含后者。前面说了,Maven的一个重要作用就是统一管理jar包,为了一个项目可以build或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些依赖就被称为dependency。

  说到这里,就有一个本地仓库和远程仓库的概念了。本地仓库和远程仓库是这样的,Maven工程首先会从本地仓库中获取jar包,当无法获取指定jar包时,本地仓库会从远程仓库(中央仓库)中下载jar包,并放入本地仓库以备将来使用。本次仓库路径:c:\用户{找到计算机用户}.m2。远程仓库默认使用的是http://repo2.maven.org/maven2/,但是我们也可以修改。

  举个例子,比方说我的项目中用到了MyBatis,那么pom可以添加这段配置:

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.5</version>
    </dependency>
</dependencies>

点击ctrl+s保存,Eclipse就会自动到远程仓库里下载mybatis的jar包到本地仓库,通过groupId、artifactId、version唯一标识一个Maven项目,有了这三个元素,我们就可以去远程仓库下载,如果本地仓库里已经有该jar包了,则不会到远程仓库下载。

properties


properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。通过${}可以在dependency引用该模块定义的属性。

代码语言:javascript
复制
<properties>
    <mybatis.version>3.2.5</mybatis.version>
  </properties>
  <dependencies>
    <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
      </dependency>
    </dependencies> 

如上代码,我们在properties中定义了一个mybatis.version的属性,然后再下面的version里面就可以引用该属性了。

远程仓库修改


代码语言:javascript
复制
<repositories>
    <repository>
        <id>Dcm4Che</id>
        <name>Dcm4Che</name>
        <url>http://www.dcm4che.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
代码语言:javascript
复制

标签的含义如下:

  • id maven仓库的id(自定义)
  • name maven仓库的名称(自定义)
  • url maven仓库的url(可以替换为阿里的镜像仓库:http://maven.aliyun.com/nexus/content/groups/public/,可以是自己搭建的maven私服)
  • releases maven仓库中版本为release的包
  • snapshots maven仓库中版本为snapshots的包

Maven 构建生命周期


一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:

阶段

处理

描述

验证 validate

验证项目

验证项目是否正确且所有必须信息是可用的

编译 compile

执行编译

源代码编译在此阶段完成

测试 Test

测试

使用适当的单元测试框架(例如JUnit)运行测试。

包装 package

打包

创建JAR/WAR包如在 pom.xml 中定义提及的包

检查 verify

检查

对集成测试的结果进行检查,以保证质量达标

安装 install

安装

安装打包的项目到本地仓库,以供其他项目使用

部署 deploy

部署

拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

常用的maven命令如下:

1. 编译源代码:

代码语言:javascript
复制
mvn compile

2. 运行测试:

代码语言:javascript
复制
mvn test

3. 打包:

代码语言:javascript
复制
mvn package

4.打包到本地仓库(.m2路径下)

代码语言:javascript
复制
mvn install

5.清除产生的项目(清楚target目录文件)

代码语言:javascript
复制
mvn clean

6.上传到私服

代码语言:javascript
复制
mvn deploy

7.组合命令

代码语言:javascript
复制
mvn clean install --清楚打包

mvn -Dtest package 跳过测试 只打包

文章参考

http://www.runoob.com/maven/maven-tutorial.html

https://www.yiibai.com/maven

https://cloud.tencent.com/developer/article/1432731

作者:Eric.Chen

出处:https://www.cnblogs.com/lc-chenlong

如果喜欢作者的文章,请关注“写代码的猿”订阅号以便第一时间获得最新内容。本文版权归作者所有,欢迎转载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Maven是什么?
  • Maven POM
  • properties
  • 远程仓库修改
  • Maven 构建生命周期
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档