pom.xml

概述

pom 是 project model object

<?xml version="1.0" encoding="UTF-8"?>
<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>
</project>

project 标签里可以写的标签

项目描述

<!-- 项目组 -->
<groupId>com.baidu.lego</groupId>
<!-- 项目名 -->
<artifactId>admin-service</artifactId>
<!-- 项目版本 -->
<version>1.2.2</version>
<!-- 项目类型,可选 jar,war,pom。默认是 jar -->
<packaging>jar</packaging>

版本管理

<dependencyManagement>
    <dependencies>
        <!--spring boot 2.2.2-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--spring cloud Hoxton.SR1-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

1:子模块会自动引入父模块的dependencies依赖,而不会自动引入dependencyManagement的依赖

2:dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖,而且不需要指定version、scope,系统会自动用父模块的version、scope

项目所需依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session</artifactId>
        <version>1.3.5.RELEASE</version>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
    </dependency>
</dependencies>

生命周期

scope

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
scope 编译阶段 测试阶段 运行阶段 发布阶段 备注
compile yes yes yes yes 默认scope
provided yes yes yes -
system yes yes yes - @Deprecated;类似provided; 需指定systemPath属性,从本地仓库下载依赖;
runtime - yes yes yes
test - test - - 举例:junit
import ~ ~ ~ ~ 只用于 dependencyManagement中type=pom的dependency 举例:spring-cloud-dependencies

作用域

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 防止将devtools依赖传递到其他模块中 -->
</dependency>

Project A 是 Project B 的 parent

Project A 使用<optional>true</optional>,Project B 里不会传进这个 dependency

自定义变量

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>12</maven.compiler.source>
</properties>

然后可以在别的地方这么使用:${maven.compiler.source}

Maven 生命周期指令

  1. clean,清理,在进行真正的构建之前进行一些清理工作,移除所有上一次构建生成的文件。执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。
  2. validate,验证,验证工程是否正确,所需的信息是否完整。
  3. compile,编译源码,编译生成class文件,编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件。
  4. test,单元测试,测试。
  5. package,打包,将工程文件打包为指定的格式,例如JAR,WAR等。这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功能进行编译,同时会在target目录下生成项目的jar/war文件。如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目,这时就用到install命令了
  6. verify,核实,检查package是否有效、符合标准。
  7. install,安装至本地仓库,将包安装至本地仓库,以让其它项目依赖。该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题)
  8. site,站点,生成项目的站点文档
  9. deploy,复制到远程仓库
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • POM 代表“Project Object Model”。它是 Maven 项目的 XML 表示形式,保存在名为 ...
    rosy_dawn阅读 2,213评论 0 1
  • 一、概述   当我们使用Maven来管理和构建我们的项目的时候,我们会不可避免的遇到pom文件。虽然已经配置过po...
    骑着乌龟去看海阅读 7,894评论 1 15
  • Maven 教程Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 1. maven中的坐...
    loserwang_3030阅读 280评论 0 0
  • maven构建的生命周期 maven是围绕着构建生命周期这个核心概念为基础的。maven里有3个内嵌的构建生命周期...
    牛初九阅读 421评论 0 0
  • 使用IDEA创建spark项目,会用到 pom.xml的配置,现简单做个记录。 1. 固定部分 当我们创建好项目时...
    _诉说阅读 2,289评论 0 0

友情链接更多精彩内容