美文网首页
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