美文网首页
Maven基础(一)

Maven基础(一)

作者: MikeShine | 来源:发表于2021-07-13 17:41 被阅读0次

    1. 写在前面

    这个部分都是参考廖雪峰的课程和集团内部分享。沉淀一些笔记。


    2. Maven 是干什么的?

    答案: Maven 是用来管理 java 工程的

    Java项目需要如下东西:

    • 依赖包
    • 工程目录管理
    • 项目构建流程

    首先,依赖可以直接理解成 python 中的 import包;其次,工程目录结构指 src 文件 存放源码,bin目录存放编译的 .class 文件等;最后,项目构建流程包括 编译、测试、打包、发布等。
    maven 为 java 工程提供了以下功能:

    • 一套基于pom文件的依赖管理机制
    • 标准化的工程结构
    • 标准化的构建流程

    3. 一个maven工程的标准结构

    src
      -main
          –bin 脚本库
          –java java源代码文件(核心代码部分)
          –resources 资源库,会自动复制到classes目录里(配置文件部分)
          –filters 资源过滤文件
          –assembly 组件的描述配置(如何打包)
          –config 配置文件
          –webapp 页面资源,WEB-INF、css、js等
      -test
          –java 单元测试java源代码文件(测试代码部分)
          –resources 测试需要用的资源库(测试配置文件)
          –filters 测试资源过滤库
      -site Site(一些文档)
    target
    LICENSE.txt Project’s license
    README.txt Project’s readme
    
    一个maven工程
    其中,\underline{a-maven-project}是项目的根目录,其中包含了一个 \underline{pom.xml} 描述文件;存放java源代码的是 \underline{src/main/java};存放资源文件的是\underline{src/main/resurces};存放测试用例源代码的是\underline{src/test/java};存放测试资源的是\underline{src/test/resources};最后所有编译打包生成的文件都在\underline{target}目录中。

    4. POM描述文件

    POM文件的概念比较重要,是我们平时最常接触的。这里看一下POM文件的内容和相关用途。
    XML(EXtensible Markup Language)。
    给一个pom.xml文件

    <project ...>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.itranswarp.learnjava</groupId>
        <artifactId>hello</artifactId>
        <version>1.0</version>
        <packaging>jar</packaging>
        <properties>
            ...
        </properties>
        <dependencies>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
    </project>
    

    这里先简单理解一下常用的标签:

    • <project> :所有标签的根节点
    • <modelVersion>:当前模型版本,与maven有关,一般不管
    • <groupId> <artifactId> <version>:
      \underline{groupId}一般是公司或者组织名;\underline{artifactId}是构建【可以是jar、war包】本身的名字;\underline{version}就是当前构建的版本。一般用这3个共同确定一个构建

    artifact means something made by humans with intelligence.
    一个构建是一个抽象概念。

    • <packaging>:制定了当前构建的类型,一般是 jar、war、pom
    • <properties>:自定义属性,一般是依赖的版本

    前面依赖本来就有版本,这里可能只是重新指定一下。
    如在 <dependency> 中的 <version> 写了${pandora-boot.version} 这样的,在<properties> 标签中就要指定 ${pandora-boot.version} 具体的版本号。
    个人理解这样是为了方便版本号批量管理。

    • <build>:指定如何构建当前的构建。其中包含:
      -- <resources>:指定了当前构建的资源目录
      -- <plugins>:当前构建使用的插件


      一个build
    • <dependencies>:当前构建需要的依赖,包含多个 <dependency>子标签
      -- <dependency>: 指定了依赖,包含3个属性来共同定位依赖。


    5. 总结

    上面说了很多,总结一下。
    Maven 核心功能两个点:打包依赖管理

    5.1 打包

    所谓“打包”,就是把 java 源码 编译,打包。形成一个 jar 包。这个包里可能含有多个 .CLASS 类,资源文件等

    打包的主要作用就是把你的代码共享给他人。
    类似于你用 python 中的 import 第三方包

    先了解一下maven构建的3个阶段:

    • package:只打包
    • intall:部署到本地仓库。方便本地调试
    • deploy:部署到本地。同时部署到远程仓库。(这里deploy的服务器仓库已经在 maven 配置中写清楚了。)
    maven常用的操作

    5.2 依赖管理

    这个之前已经讲的比较详细了。

    相关文章

      网友评论

          本文标题:Maven基础(一)

          本文链接:https://www.haomeiwen.com/subject/squspltx.html