我是靠谱客的博主 无心自行车,最近开发中收集的这篇文章主要介绍Maven项目pom文件节点介绍Maven节点介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Maven节点介绍

文章目录

  • Maven节点介绍
    • project
      • groupId
      • artifactId
      • version
      • packaging
      • name
      • scm
      • properties
      • dependencyManagement
      • build
        • pluginManagement
        • plugin
        • resources
        • resource
    • parent

project

项目顶层节点,写法固定,不做过多解析。

groupId

说明该项目是由哪个部门开发的,一般是所在公司的域名的倒置

artifactId

该项目在该公司的唯一识别标识

version

项目版本号


Maven中的所有项目都适用以上三个节点来联合表示,使用这三个节点,既可以表示自己在maven中的唯一位置,也可以准确导入其他依赖包。

packaging

打包方式,值选项为:pom, jar, maven-plugin, ejb, war, ear, rar

默认打包方式为jar

如果当前pom是作为parent来设计,让其他pom来导入的话,其打包方式必须为pom

name

当前包的名字

scm

版本控制链接,比如github的链接

properties

按照<name>value</name>的格式来定义变量,供pom的其他部分来调用,便于管理

dependencyManagement

依赖管理节点,格式为:

<dependencyManagement>
    <dependencies>
          <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-amqp</artifactId>
            <version>${activemq.version}</version>
          </dependency>
    </dependencies>
</dependencyManagement>

可以看出来和dependencies很像,但是两者有区别。

  • dependencyManagement是被用来做管理的,通常出现在父pom文件中,对所有引入该pom的子pom文件做统一的版本管理以避免版本冲突带来的问题
  • 定义在dependencyManagement内部的dependency不会被自动装载,需要子pom在dependencies节点内进行显式引入才会自动下载
  • 在dependencyManagement中注册的依赖应该已经有了明确的版本信息(否则就失去了第一条的作用),后面子pom进行一来导入的时候可以不写版本信息,会自动从父pom中寻找到版本信息。这就保证了所有的子模块版本一致。

build

构建工程的顶级节点

pluginManagement

功能类似于dependencyManagement,格式为:

<pluginManagement>
    <plugins>
          <plugin>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-amqp</artifactId>
            <version>${activemq.version}</version>
          </plugin>
    </plugins>
</pluginManagement>
plugin

插件节点

resources

资源管理节点,内部为多个resource

resource

https://stackoverflow.com/questions/60041457/spring-boot-starter-parent-resources-includes-excludes-explained

https://my.oschina.net/anxiaole/blog/1613348

具有多个子节点,用于指定资源文件的路径

spring-boot-starter-parent文件中,有一段比较‘奇怪’的代码:

      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>
      </resource>

      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <!-- <filtering>true</filtering> -->默认为false
        <excludes>
          <exclude>**/application*.yml</exclude>
          <exclude>**/application*.yaml</exclude>
          <exclude>**/application*.properties</exclude>
        </excludes>
      </resource>

两者看着比较奇怪,两块代码相反,而且重复。其实不然,这段代码是为了将application的配置文件拷贝到程序运行生成的文件夹中,其中第一块代码是将满足命名要求的资源文件复制到指定文件夹,后一块代码将剩下的其他的配置文件复制到指定文件夹。两者合作才能保证不遗漏。

我还是觉得多余,直接这样写不行吗?

    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>

parent

引入父POM的节点,内部依然是老三样:

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.0-SNAPSHOT</version>

最后

以上就是无心自行车为你收集整理的Maven项目pom文件节点介绍Maven节点介绍的全部内容,希望文章能够帮你解决Maven项目pom文件节点介绍Maven节点介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部