Maven 基础(一) | 使用 Maven 的正确姿势(上)

简介: 记得,刚工作的时候我连 maven 都不会用,现在工作差不多两年了,对 maven 也有一定的了解。我平时有做笔记的习惯,这篇是我学习时整理的笔记,分享给你们,有用的话,求文末点亮一个在看,谢谢你!

一、什么是 Maven?


Maven 是一个项目管理工具,它的本质是一个项目对象模型 (POM),体现在配置中就是我们常见的 pom.xml 文件,而这个 pom 文件就是 Maven 的核心,它管理了整个项目的生命周期。它主要做两件事:


  • 项目构建:对项目进行编译、打包、测试、部署以及上传到私服仓库等


  • 依赖管理:Maven 诞生时就提出了一个仓库的概念,项目中用到的第三方 jar 包,我们在 pom.xml 中配置好依赖即可,Maven 会自动到它的官方中央仓库下载这个 jar 包到我们的本地仓库。



二、为什么要使用 Maven?


  • 方便依赖管理:Java 发展至今,生态非常完善。我们在项目中用到什么功能,网上一搜肯定有对应的 jar 包,各种功能就导致了各种 jar 包的引入,这些 jar 包之间可能会有依赖,可能会有版本冲突。而 Maven 的诞生解决了这些问题。


  • 构建多模块项目:现在很多项目都是分了多个模块,便于开发、也便于扩展。多模块就意味着模块之间会有各种依赖,我们运行某个模块,可能这个模块依赖了别的模块。而 Maven 的一键构建项目帮我们解决了这个问题。


  • 方便移植:以前没 maven 的时代,团队协作要上传、下载一大堆 jar 包导入项目,耗时、费力。而有了 maven ,我们只需要同步一下 pom 文件即可同步 jar 包。这是 maven 解决的第三个问题。


三、怎么使用 Maven?


3.1 Maven 的安装


这个就不讲了,网上很多资料。比如:



3.2 Maven 的配置


Maven 的配置比较简单,主要是修改 conf 文件夹下的 setting 文件。配置以下三个仓库:


本地仓库


项目依赖的 jar 包是需要下载到本地才能用的。本地仓库就是从 maven 私服或者远程仓库下载的 jar 的存储地址,默认是 当前用户名\.m2\repository ,我建议改个好记的地方,后面方便检查包有没下载到本地。打开 setting.xml 搜索 localRepository 修改成自定义的地址。


<localRepository>D:\Repository</localRepository>


配置的位置,如下图:


640.png


私服仓库


这个仓库的话,一般就是公司内部使用的啦。用来存储公司内部自己的 jar 包。打开 setting.xml 文件搜索 mirrors ,配置公司的镜像地址即可。


<mirror>
  <id>nexus-repos</id>
  <mirrorOf>*</mirrorOf>
  <name>Team Nexus Repository</name>
  <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
</mirror>


远程仓库


远程仓库就是一个 maven 官方维护的,包含大量 jar 包的仓库。这个库默认是 maven 官方的,但是下载非常慢。所以业界典范阿里巴巴也推出了一个国内的镜像,我们一般把远程仓库配成阿里的镜像地址,就可以快速地下载 jar 包啦。和私服仓库一样,远程仓库也是配置在 <mirrors> 标签内。


<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
</mirror>


配置的位置,如下图:


640.png


有人可能问了,配置那么多个仓库。究竟 jar 从哪个下载的呀?都把我搞糊涂了,别急,我花了个流程图,它的查找顺序是这样的:本地不需要网络,优先从本地找;找不到,再去速度较高的内网私服找;然后才是速度稍低的外网远程仓库找。


640.png


3.3 Maven 的命令


常用命令


命令 含义 备注
mvn clean 清除 打包前,清空上一次的包
mvn compile 编译 将 java 代码编译成 class 文件
mvn test 测试 运行单元测试
mvn install 安装到本地 安装到本地仓库,一般是 jar 包
mvn package 打包 一般会在 target 目录下生成包,jar 或 war
mvn deploy 上传 上传到私服,需在 setting.xml 文件配置私服仓库以及账号密码


以上就是 maven 常用的命令,要注意的是:很少情况下我们只运行其中一个命令,都是组合运行的。比如打包到本地,打包前得清空原有的包吧?那组合起来就是 mvn clean + mvn install

当然,在 IDEA 中开发 maven 项目,我们并不需要手打。只需点击对应命令即可(也可以按住 ctrl 选中多个命令一起运行)


640.png


总而言之,根据自己的需求来选择打包命令。还有其他的命令请见:



创建 maven 项目


现在一般都是配合 idea 新建 maven 项目了,这个命令用得很少,但我们还是得知道一下:生成 maven 项目的原理是,依赖一个插件 maven-archetype-plugin,然后这个插件自带一些 archetype 模版,也可以说成项目的骨架。其中:-DgroupId-DartifactId 填写自己想好的项目坐标,一般 -DgroupId 是公司名的翻转,比如 com.google-DartifactId 就是项目的名称了。最重要的是 -DarchetypeArtifactId,他指定了创建的骨架。


mvn archetype:generate -DgroupId=com.nasus -DartifactId=maven-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


640.jpg


点进去,只有 src 文件夹和 pom.xml 文件:src 是最重要的目录,代码和测试用例以及资源都是放在这里的,对于 maven 项目而言,pom.xml 也是必不可少的。


640.png


idea 打开的项目结构是这样的:


640.png


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/maven-v4_0_0.xsd">
    <!--声明项目描述符遵循哪一个 POM 模型版本,上面的 xsd 规范定义了这个版本,默认就行,不需要修改,不可删除-->
    <modelVersion>4.0.0</modelVersion>
    <!--团体唯一标识符-->
    <groupId>com.nasus</groupId>
    <!--项目唯一标识符定位这个包-->
    <artifactId>maven-test</artifactId>
    <!--打包类型-->
    <packaging>jar</packaging>
    <!--打包版本-->
    <version>1.0-SNAPSHOT</version>
    <!--包名-->
    <name>maven-test</name>
    <!--不用管,删掉也行-->
    <url>http://maven.apache.org</url>
    <!--项目需要依赖的 jar 包-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


由于篇幅原因,这里就不详细讲具体的 pom.xml 标签了,详细介绍请看:



项目打包到本地仓库


由于项目是 java 项目,在打包前,我们要在 pom.xml 中配置项目的 JDK 版本以及 maven 插件版本,在 <dependencies> 标签前加入项目属性配置,完整配置如下:


<!--项目属性,在 <dependencies> 前加-->
    <properties>
        <!-- JDK编译版本 -->
        <java.version>1.8</java.version>
        <!-- 项目编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- JDK编译版本 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
    <!--项目需要依赖的 jar 包-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


选择命令,这里我选了 clean、compile、package


640.png


点击绿色执行按钮,在 target 目录下生成 maven-test-1.0.SNAPSHOT.jar:


640.png


跳过单元测试


在开发中,我们经常需要本地测试,而这时我们是不需要跑单元测试的。所以,我们可以跳过单元测试:选中 test,点击红框按钮即可。


640.png


手动打 jar 包到本地仓库


手动打 jar 包的应用场景是:开发公司旧项目,当找不到依赖的 jar 源码,依赖的 jar 又没有上传到仓库,只有在同事电脑的本地仓库有一个 jar 包时,我们可以直接运行这条命令把 jar 包打到我们电脑本地仓库,愉快的使用起来。


mvn install:install-file -Dfile=jar包的路径 -DgroupId=gruopId中的内容 -Dartifact
相关文章
|
Java Maven 开发工具
maven基础篇(四)
maven基础篇
152 1
|
XML Java 应用服务中间件
maven基础篇(三)
maven基础篇
166 1
|
XML 存储 Java
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
选择Maven后直接选择下一步(注意这里不需要进行任何操作,不用搜索quickstart,直接点击下一步即可)
222 0
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
|
Java 应用服务中间件 Maven
Maven基础学习——tomcat插件配置(含web工程配置)
Maven基础学习——tomcat插件配置(含web工程配置)
1494 0
Maven基础学习——tomcat插件配置(含web工程配置)
|
IDE Java Apache
|
JavaScript Java Maven
|
存储 IDE Java
|
存储 JavaScript Java
Maven 基础
Maven 基础
138 0
Maven 基础
|
存储 IDE 前端开发
Maven基础
Maven基础
120 0
Maven基础
|
存储 IDE 前端开发
Maven基础
Maven基础
92 0
Maven基础