当前位置: 首页 > news >正文

Maven 详细配置:Maven 项目 POM 文件解读

Maven 是 Java 开发领域中广泛使用的项目管理和构建工具,通过其核心配置文件——POM(Project Object Model)文件,开发者能够定义项目的基本信息、依赖关系、插件配置以及构建生命周期等关键要素。POM 文件不仅是 Maven 项目的核心,更是项目依赖和模块化管理的基础。在使用 Maven 管理复杂项目时,深入理解 POM 文件的结构和作用至关重要。本篇内容将系统解读 POM 文件的核心要素,帮助读者全面掌握其配置方法及最佳实践,为高效管理项目和构建流程奠定坚实基础。


文章目录

      • 1、POM_的概念
      • 2、基础设置
        • 2.1、Maven_坐标
        • 2.2、打包方式
        • 2.3、POM_关系
        • 2.4、依赖项
        • 2.5、依赖管理
        • 2.6、属性
      • 3、构建设置
        • 3.1、构建元素
        • 3.2、报告元素
      • 4、更多项目信息
        • 4.1、简单信息元素
        • 4.2、许可证
        • 4.3、组织
        • 4.4、开发人员
        • 4.5、贡献者
      • 5、环境设置
        • 5.1、问题管理
        • 5.2、持续集成管理
        • 5.3、邮件列表
        • 5.4、供应链管理
        • 5.5、先决条件
        • 5.6、存储库
        • 5.7、插件库
        • 5.8、分发管理
        • 5.9、配置管理


1、POM_的概念

在 Maven 官网,关于 POM 文件的说明页面(https://maven.apache.org/pom.html)说明了:

POM 代表 “项目对象模型(Project Object Model)”,它是 Maven 项目的 XML 表示形式,存放在名为 pom.xml 的文件中。当和 Maven 相关人员交谈时,提到项目并不仅仅是指一个代码文件的集合,而是在哲学意义上超越了这个概念。一个项目不仅包含配置文件,还包括参与开发的人员及其角色、缺陷跟踪系统、组织和许可证、项目所在的网址、项目的依赖项以及所有其他能够赋予代码生命的细小环节。它是关于项目的“一站式商店”。实际上,在 Maven 的世界中,一个项目甚至不需要包含任何代码,只需有一个 pom.xml 文件即可

下面是一份位于 POM 文件中 <project> 元素下的元素列表(截图自官网):

image-20241024134031701

Maven 官方在官网中将 POM 的顶级元素分为了四大类,分别是: The Basics(基础设置)、Build Settings(构建设置)、More Project Information(更多项目信息)以及 Environment Settings(环境设置)。


2、基础设置

2.1、Maven_坐标

在 Maven 中,坐标(Coordinates) 是用来唯一标识一个构件的方式。每个构件都有一个唯一的坐标。Maven 还使用坐标来确保在构建过程中正确解析和获取依赖的版本。

通过下面三个元素的定义会指向固定项目的特定版本。让 Maven 知道我们正在与谁打交道,以确保依赖的准确性和一致性。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--  **项目组唯一标识符,通常是组织的反向域名  --><groupId>com.lizhengi</groupId><!--  项目构建产物的标识符,通常为项目名称  --><artifactId>lizhengi-demo-maven</artifactId><!--  项目当前版本 格式一般为为:`主版本.次版本.增量版本-限定版本号  --><version>0.0.1-SNAPSHOT</version>...
</project>

配置详细说明:

  • 顶级元素 groupId:项目组唯一标识符,通常是组织的反向域名。
  • 顶级元素 artifactId:项目构建产物的标识符,通常为项目名称,它和 groupId 一起标识一个构件,组成为构建的全球唯一标识符。
  • 顶级元素 version:项目当前版本,格式一般为为:主版本.次版本.增量版本-限定版本号1.0.0-SNAPSHOT)。
2.2、打包方式

Maven 提供了多种打包方式,以支持不同类型的项目和需求。每种打包方式都可以通过在 pom.xml 中设置 <packaging> 标签来指定。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目打包类型,默认值为 jar   --><packaging>pom</packaging>...
</project>

配置详细说明:

  • 顶级元素 packaging:项目打包类型,默认值为 jar
2.3、POM_关系

Maven 的一个强大的方面是它处理项目关系:这包括依赖关系(和传递依赖关系)、继承和聚合(多模块项目)。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   父项目信息,用于依赖传递,如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值   --><parent><!--   父项目坐标  --><!--   标签 groupId 和 version 可以被继承或覆盖,继承情况下子项目标签定义可以省略   --><groupId>com.lizhengi</groupId><artifactId>lizhengi-demo-framework</artifactId><version>0.0.1-SNAPSHOT</version><!--   搜索父项目的给定目录,它不是必需的,但指定后 Maven 会首先搜索该项目父级的给定路径,然后再搜索本地和远程存储库   --><relativePath>../../lizhengi-demo-framework</relativePath></parent><!--   项目所包含的所有子模块   --><modules><module>lizhengi-demo-maven-project</module></modules>...
</project>

配置详细说明:

  • 顶级元素 **parent:**用于依赖传递,标记父项目的 Maven 坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。
  • 一级子元素 groupIdartifactIdversion :父项目的 Maven 坐标。
  • 一级子元素 relativePath:搜索父项目的给定目录,它不是必需的,但指定后 Maven 会首先搜索该项目父级的给定路径,然后再搜索本地和远程存储库。
  • 顶级元素 **modules:**用于在多模块项目继承和聚合,列出该了项目所包含的所有子模块。
  • 一级子元素 module:顶级元素 modules 子标签,标签内列出子模块的名称。
2.4、依赖项

POM 的基础是其依赖项列表。大多数项目都依赖于其他项目才能正确构建和运行。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的所有依赖项   --><dependencies><!--   项目依赖项   --><dependency><!--   依赖项坐标   --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.5</version><!--   依赖项的分类器,在依赖中指定 classifier(同一个 artifactId 构件可以有不同的 classifier)   --><classifier>jdk8</classifier><!--   依赖项的打包类型(同一个 artifactId 构件可以有不同的打包类型)   --><type>jar</type><!--   依赖的范围,控制依赖在不同构建阶段的使用,可选的值有 [provided, compile, runtime, test, system]   --><scope>compile</scope><!--   仅当依赖项为 system 时才使用,用于指定本地系统中 jar 文件的路径   --><systemPath/><!--   排除的依赖构件集,即告诉 Maven 只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题   --><exclusions><!--   排除的具体依赖构件集   --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions><!--   可选依赖,阻断依赖的传递性,默认为 false   --><optional>true</optional></dependency></dependencies>...
</project>

配置详细说明:

  • 顶级元素 **dependencies:**描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。
  • 一级子元素 **dependency:**表示一个单独的依赖项,包含了该依赖的所有详细信息。
  • 二级子元素 groupIdartifactIdversion :依赖项坐标。
  • 二级子元素 **classifier:**分类器,用于区分同一 artifact 的不同变种。例如一个项目,同时提供了针对 Java11 和 Java1.8 的两个编译版本,则可以通过 classifier 进行区分。
  • 二级子元素 **type:**指定依赖的打包类型,默认是 jar
  • 二级子元素 scope:依赖的范围,控制依赖在不同构建阶段的使用。
  • 二级子元素 **systemPath:**仅用于 system 范围,指定依赖库的本地路径。一般不推荐使用,因为它依赖于文件系统的绝对路径。
  • 二级子元素 exclusions:排除的依赖构件集,即告诉 Maven 只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题。
  • 三级子元素 exclusion:排除的具体依赖构件集。
  • 四级子元素 groupIdartifactId:排除的具体依赖构件集的组织 ID 和项目 ID。
  • 二级子元素 **optional:**表示该依赖是否为可选依赖,阻断依赖的传递性。如果某个库标记为可选,依赖该库的项目必须显式声明它。
2.5、依赖管理

依赖项中的版本可以在依赖管理中进行管理,

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <dependencyManagement><dependency><!-- 参见 dependencies/dependency 元素 -->...</dependency>...</dependencyManagement>...
</project>

配置详细说明:

  • 顶级元素 **dependencies:**描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。
  • 一级子元素 **dependency:**表示一个单独的依赖项,包含了该依赖的所有详细信息。内容同 dependencies/dependencie 相同。
2.6、属性

POM 属性通常用于存储版本号、项目名称等重复使用的值,以提高配置的可维护性。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   用于整个 POM 文件中引用的属性,以值替代名称   --><properties><!--   以下两个属性为 Maven 保留,未来将成为 POM 定义中的元素   --><!--   用于指定项目的源码文件的编码格式   --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--   用于指定生成的报告的输出编码格式   --><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--   以下两个属性是专门为 Maven Compiler Plugin(Maven 编译插件)使用的   --><!--   用于指定 Java 编译器的源版本,即代码的最低兼容版本。值通常是 Java 版本号   --><maven.compiler.source>8</maven.compiler.source><!--   用于指定编译器生成的目标版本,即编译输出的字节码的最低兼容版本。值通常也为 Java 版本号   --><maven.compiler.target>8</maven.compiler.target></properties>...
</project>

配置详细说明:

  • 顶级元素 **properties:用于整个 POM 文件中引用的属性,以值替代名称。

3、构建设置

3.1、构建元素

在 Maven 项目中,<build> 标签用于定义项目的构建行为和结构。通过它,可以指定默认的构建目标、输出路径等。根据应用场景的不同,<build> 标签可以分为全局和环境配置两类。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   构建插件构建项目需要的信息   --><build><!--   当项目没有规定目标(阶段)时的默认值   --><defaultGoal>install</defaultGoal><!--   定义构建结果的输出目录,默认路径为 `target`   --><directory>target</directory><!--   指定构建结果文件的名称,默认值为 `${artifactId}-${version}`   --><finalName>${artifactId}-${version}</finalName><!--   指定主源代码和测试代码的目录   --><sourceDirectory>src/main/java</sourceDirectory><testSourceDirectory>src/test/java</testSourceDirectory><!--   指定脚本源程序存放目录(脚本不会被编译)   --><scriptSourceDirectory>src/main/scripts</scriptSourceDirectory><!--   指定主代码和测试代码编译后的输出目录   --><outputDirectory>target/classes</outputDirectory><testOutputDirectory>target/test-classes</testOutputDirectory><!--   用于定义项目资源文件的位置。资源可以是配置文件、图片等静态内容,并支持过滤操作(替换占位符)   --><resources><!--   定义一个项目资源文件的具体信息   --><resource><!--   指定资源文件所在的目录路径,默认在 `${basedir}/src/main/resources`   --><directory>src/main/resources</directory><!--   是否在构建过程中对资源进行过滤。设置为 `true` 时,会替换文件中的占位符   --><filtering>true</filtering><!--   定义包含的文件模式   --><includes><include>**/*.properties</include><include>**/*.xml</include></includes><!--   定义排除的文件模式   --><excludes><exclude>**/*.test.xml</exclude></excludes></resource></resources><!--   用于定义项目测试资源文件的位置   --><testResources><!--   定义一个项目资源测试文件的具体信息,属性作用与 resource 相同    --><testResource><directory>src/main/testResources</directory><filtering>true</filtering><includes><include>**/*.properties</include><include>**/*.xml</include></includes><excludes><exclude>**/*.test.xml</exclude></excludes></testResource></testResources><!--   当 filtering 开关打开时,使用到的过滤器属性文件列表,它通常与 resources 配合使用   --><filters><!--   过滤文件,在构建时,Maven 会根据过滤文件中的值将占位符替换成实际的内容   --><filter>src/main/filters/dev.properties</filter></filters><!--   项目可以引用的默认插件信息   --><pluginManagement><!--   使用的插件列表   --><plugins><plugin><!--   指定插件的坐标   --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.13.0</version><!--   指定插件执行的配置。一个插件可以有多个执行阶段,每个执行阶段可能有不同的配置   --><executions><!-- 每个 <execution> 定义一个插件在构建生命周期中的具体执行过程   --><execution><!-- 用于标识此执行的唯一 ID。可以为每个执行指定一个不同的 ID 来区分它们   --><id>compile-phase</id><!-- 绑定此插件目标执行的生命周期阶段。在这个例子中,插件目标将在 "compile" 阶段执行   --><phase>compile</phase><!-- 指定插件执行的目标   --><goals><!-- 目标名称。在此示例中,目标是 "compile",它将执行编译源代码的任务   --><goal>compile</goal></goals></execution></executions><!--   指定插件执行的目标,每个插件可以有多个目标,而目标则是执行插件时执行的具体任务   --><goals><goal>compile</goal></goals><!--    指定插件执行时的配置信息。不同的插件会有不同的配置选项    --><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration><!--   在插件执行过程中,指定插件所需的额外依赖。这些依赖将被添加到插件的 classpath 中,以支持插件的执行   --><dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.15.0</version></dependency></dependencies><!--   指定是否继承父 POM 中的插件配置。值可以是 true 或 false。默认为 true,表示会继承父 POM 的配置   --><inherited>false</inherited><!--   指定该插件是否作为扩展引入,即它是否扩展 Maven 的构建生命周期或提供额外的功能   --><extensions>true</extensions></plugin></plugins></pluginManagement><!--   指定项目的构建过程中使用的插件列表   --><plugins><plugin><!--   指定插件的坐标   --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.13.0</version><!--   指定插件执行的配置(例如绑定到构建生命周期的阶段)。一个插件可以有多个执行阶段,每个执行阶段可能有不同的配置   --><executions><!--   定义一个插件在构建生命周期中的具体执行过程   --><execution><!--   用于标识此执行的唯一 ID。可以为每个执行指定一个不同的 ID 来区分它们   -><id>compile-phase</id><!-   绑定此插件目标执行的生命周期阶段。在这个例子中,插件目标将在 "compile" 阶段执行   --><phase>compile</phase><!--   指定插件执行的目标   --><goals><!--   目标名称。在此示例中,目标是 "compile",它将执行编译源代码的任务   --><goal>compile</goal></goals></execution></executions><!--   指定插件执行的目标,每个插件可以有多个目标,而目标则是执行插件时执行的具体任务   --><goals><goal>compile</goal></goals><!--    指定插件执行时的配置信息。不同的插件会有不同的配置选项    --><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration><!--   在插件执行过程中,指定插件所需的额外依赖。这些依赖将被添加到插件的 classpath 中,以支持插件的执行   --><dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.15.0</version></dependency></dependencies><!--   指定是否继承父 POM 中的插件配置。值可以是 true 或 false。默认为 true,表示会继承父 POM 的配置   --><inherited>false</inherited><!--   指定该插件是否作为扩展引入,即它是否扩展 Maven 的构建生命周期或提供额外的功能   --><extensions>true</extensions></plugin></plugins><!--   指定项目的构建过程中使用的额外插件或扩展列表,其特点是额外插件不与 Maven 生命周期绑定     --><extensions><extension><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>3.0.0</version></extension></extensions></build>...
</project>

配置详细说明:

  • 顶级元素 **build:**用于定义项目的构建行为和结构。
  • 一级子元素 defaultGoal 当执行 mvn 命令且未指定目标时,默认执行的目标。
  • 一级子元素 directory 定义构建结果的输出目录,默认路径为 target
  • 一级子元素 finalName 指定构建结果文件的名称,默认值为 ${artifactId}-${version}
  • 一级子元素 sourceDirectorytestSourceDirectory 指定主源代码和测试代码的目录。
  • 一级子元素 scriptSourceDirectory :脚本源程序存放目录(脚本不会被编译)。
  • 一级子元素 outputDirectorytestOutputDirectory 指定主代码和测试代码编译后的输出目录。
  • 一级子元素 resourcestestResources 用于定义项目资源文件的位置。资源可以是配置文件、图片等静态内容,并支持过滤操作(替换占位符)
  • 二级子元素 directory 指定资源文件所在的目录路径,默认在 ${basedir}/src/main/resources
  • 二级子元素 filtering 是否在构建过程中对资源进行过滤。设置为 true 时,会替换文件中的占位符
  • 二级子元素 includesexcludes 定义包含或排除的文件模式。excludes 通常与 includes 配合使用,以确保符合某些条件的文件不会被处理。
  • 一级子元素 **plugins:**定义需要的插件、版本和配置。
  • 二级子元素 **plugin:**具体的插件信息。
  • 三级子元素 groupIdartifactIdversion:插件的坐标信息。
  • 三级子元素 configuration:配置插件的属性,如上例中的 Java 版本和编码。
  • 三级子元素 executions:定义插件的执行方式,包括生命周期阶段、目标、唯一标识等。
  • 四级子元素 idexecution 的唯一标识符,便于区别不同的执行任务。
  • 四级子元素 phase 指定插件的执行阶段。
  • 四级子元素 **goals:**定义执行的具体目标(goals)。
  • 四级子元素 **configuration:**配置插件的执行参数。每个 execution 可以拥有独立的配置。
  • 一级子元素 plugins:是用于统一管理插件的版本。它在父工程中定义,子工程使用时可以省略版本号,实现插件版本统一管理。
3.2、报告元素

在 Maven 项目中,<reporting> 标签用于定义项目的报告生成行为和结构。通过它,可以指定使用的报告插件、输出位置及生成的报告类型。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--  报表插件产生报表需要的信息  --><reporting><!--   指定是否排除默认报告,默认情况下,Maven 会生成一组预定义的报告,如果设置为 true,则排除这些默认报告   --><excludeDefaults>true</excludeDefaults><!--   指定所有报告的输出目录。默认情况下,报告会存放在 `${project.build.directory}/site` 路径下    --><outputDirectory>${project.build.directory}/site</outputDirectory><plugins><!--   插件部分,用于定义哪些插件需要生成报告   --><plugin><!--   插件的坐标   --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.2.5</version><configuration><!--   配置插件时可以指定特定的配置项(由插件定义)   --><reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory></configuration><reportSets><!--   指定哪些报告集(report set)应由插件生成。每个 `reportSet` 可以包含一个或多个报告   --><reportSet><!--   报告集指定唯一的 ID   --><id>surefire-reports</id><reports><!--   需要生成的具体报告的名称   --><report>report-name</report></reports></reportSet></reportSets></plugin></plugins></reporting>...
</project>

配置详细说明:

  • 顶级元素 **reporting:**用于定义项目的报告生成行为和结构。通过它,可以指定使用的报告插件、输出位置及生成的报告类型。
  • 一级子元素 **excludeDefaults:**如果设置为 true,则默认的报告将不包括在内。
  • 一级子元素 **outputDirectory:**指定生成的报告存放位置,默认为 ${project.build.directory}/site
  • 一级子元素 plugins 用于定义项目中使用的报告插件及其配置。可以通过插件来生成多种类型的报告,例如代码覆盖率报告、依赖关系报告等。
  • 二级子元素 **plugins:**具体插件信息。
  • 三级子元素 groupIdartifactIdversion:报告插件的坐标信息。
  • 三级子元素 configuration:用于配置插件的属性,例如指定报告的生成目录。
  • 三级子元素 reportSets:定义一组报告的配置,每个报告集可能有不同的配置。
  • 四级子元素 reportSets:具体报告信息
  • 五级子元素 id 报告集的唯一标识符,在 POM 继承时使用。
  • 五级子元素 reports 包含该集合中使用的具体报告名称。

4、更多项目信息

4.1、简单信息元素

一些元素不会影响构建,而是记录项目以方便开发人员。其中许多元素用于在生成项目网站时填写项目详细信息。但是,与所有 POM 声明一样,插件可以将它们用于任何用途。以下是最简单的元素。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的名称,它不是必需的,一般用于生成网站信息或者文档   --><name>lizhengi-demo-maven</name><!--   项目的简短、易读的描述,它不是必需的,一般用于生成网站信息或者文档   --><description>This is a demonstration project used to introduce Maven!</description><!--   项目的主页,它不是必需的,一般用于生成网站信息或者文档   --><url>https://www.apache.org/licenses/LICENSE-2.0.txt</url><!--   项目的首次创建年份,它不是必需的,一般用于生成网站信息或者文档   --><inceptionYear>2024</inceptionYear>...
</project>

配置详细说明:

  • 顶级元素 name:项目的名称,它不是必需的,一般用于生成网站信息或者文档。
  • 顶级元素 **description:**项目的简短、易读的描述,它不是必需的,一般用于生成网站信息或者文档。
  • 顶级元素 url:项目的主页,它不是必需的,一般用于生成网站信息或者文档。
  • 顶级元素 **inceptionYear:**项目的首次创建年份,它不是必需的,一般用于生成网站信息或者文档。
4.2、许可证

许可证是定义项目(或项目的一部分)的使用方式和时间的法律文件。项目应列出直接适用于该项目的许可证,而不是列出适用于项目依赖项的许可证。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的许可证信息,它不是必需的,一般用于生成网站信息或者文档   --><licenses><!--   定义一个许可证的具体信息   --><license><!--   许可证的名称、URL 和备注   --><name>Apache-2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0.txt</url><comments>A business-friendly OSS license</comments><!--   许可证的分发方式   --><distribution>repo</distribution></license></licenses>...
</project>

配置详细说明:

  • 顶级元素 **licenses:**用于指定项目的许可证信息。它允许开发者声明项目使用的开源许可证类型,以便其他开发者和用户了解如何使用和分发该项目。
  • 一级子元素 **license:**具体许可证信息。
  • 二级子元素 nameurlcomments : 许可证的名称、URL 和备注。
  • 二级子元素 distribution :许可证的分发方式。可能的值包括:repo(适用于代码仓库(如 Maven 中央仓库)进行分发)、site(适用于在网站上发布的内容)以及 other(其他)
4.3、组织

大多数项目都是由某种组织(企业、私人团体等)运营的。这里设置了最基本的信息。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的所属组织信息,它不是必需的,一般用于生成网站信息或者文档   --><organization><!--   许可证的名称(全称)、URL   --><name>Lizhengi Org</name><url>https://Lizhengi.org</url></organization>...
</project>

配置详细说明:

  • 顶级元素 organization: 用于描述项目所属组织的各种属性,供 Maven 产生的文档使用。
  • 一级子元素 nameurl : 组织的名称、URL 和备注。
4.4、开发人员

所有项目都包含某个人创建的文件。与围绕项目的其他系统一样,参与项目的人员也与项目有利益关系。开发人员可能是项目核心开发的成员。请注意,尽管组织可能有许多开发人员(程序员)作为成员,但将他们都列为开发人员并不是好的做法,而只是列出那些直接负责代码的人。一个好的经验法则是,如果不应该就项目联系此人,则无需在此处列出他们。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--  项目的开发者列表,它不是必需的,一般用于生成网站信息或者文档  --><developers><!--   定义一个开发者的具体信息   --><developer><!--   对应于开发人员的 ID(可能是组织内某个唯一的 ID)、开发人员的姓名、电子邮件地址和主页地址   --><id>9527</id><name>lizhengi</name><email>lizhengi@gmail.com</email><url>https://Lizhengi.org/lizhengi</url><!--   对应于开发人员的组织名称及其主页地址   --><organization>Lizhengi Org</organization><organizationUrl>https://Lizhengi.org</organizationUrl><!--   对应于开发人员在项目中的角色。可以有多个 `role` 元素   --><roles><!--   角色名称   --><role>architect</role><role>developer</role></roles><!--   对应于开发人员所在的时区   --><timezone>China/Beijing</timezone><!--   用于定义开发者的额外属性   --><properties><!--   自定义属性   --><!--   ...   --></properties></developer></developers>...
</project>

配置详细说明:

  • 顶级元素 developers: 用于指定项目的开发者列表,以便清晰地展示参与项目开发的人员及其相关信息。这对项目的透明性和管理非常重要,特别是在开源项目中。
  • 一级子元素 developer: 定义一个开发者的详细信息。
  • 二级子元素 idnameemail:这些对应于开发人员的 ID(可能是组织内某个唯一的 ID)、开发人员的姓名和电子邮件地址。
  • 二级子元素 organizationorganizationUrl:分别是开发人员的组织名称及其 URL。
  • 二级子元素 roles:描述开发者在项目中的角色。可以有多个 role 元素,role 内的值为角色名称。
  • 二级子元素 timezone:开发者所在的时区,以 -1112 的整数范围表示。例如:-5 表示东部标准时间(EST)。
  • 二级子元素 properties:用于定义开发者的额外属性,如部门等。不同的插件可能会使用这些属性,或者它们可能仅供读取 POM 的其他开发人员使用。
4.5、贡献者

贡献者与开发人员类似,但在项目生命周期中扮演辅助角色。贡献者可能提交了错误修复,或添加了一些重要文档。一个健康的开源项目可能拥有比开发人员更多的贡献者。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的贡献者列表,它不是必需的,一般用于生成网站信息或者文档   --><contributors><!--   定义一个贡献者的具体信息,属性与开发人员类似(但没有 ID 属性)   --><contributor><name>benjamin</name><email>benjamin@gmail.com</email><url>https://Lizhengi.org/benjamin</url><organization>Lizhengi Org</organization><organizationUrl>https://Lizhengi.org</organizationUrl><roles><role>tester</role></roles><timezone>China/Beijing</timezone><properties><picUrl>https://Lizhengi.org/benjamin/pic</picUrl></properties></contributor></contributors>...
</project>

配置详细说明:

  • 顶级元素 contributors:贡献者包含与开发人员相同的元素集(无该id元素)。


5、环境设置

https://maven.apache.org/pom.html#dependencies

5.1、问题管理

这定义了所使用的缺陷跟踪系统(Bugzilla、TestTrack、ClearQuest等)。虽然没有什么可以阻止插件使用此信息来做某事,但它主要用于生成项目文档。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">...<!--   项目的问题(缺陷)跟踪系统,它不是必需的,主要作为元数据记录问题跟踪系统信息,也可以用于生成网站信息或者文档   --><issueManagement><!--   项目的问题跟踪系统名称。如 JIRA、Bugzilla、GitHub Issues、ZenTao(禅道)、BugFree 等   --><system>JIRA</system><!--   项目的问题跟踪系统地址     --><url>https://issues.apache.org/jira/browse/MY_PROJECT_NAME</url></issueManagement>...
</project>

配置详细说明:

  • 顶级元素 issueManagement:问题跟踪系统的配置,如 JIRA 或 GitHub Issues。
  • 一级子元素 system:指定项目使用的具体问题追踪系统类型。例如,可以是 JIRA、GitHub Issues、Bugzilla 等。
  • 一级子元素 issueManagement:指定指向问题追踪系统的具体 URL,这样用户可以直接访问项目的缺陷列表或创建问题。
5.2、持续集成管理

过去几年中,基于触发器或时间(如每小时或每天)的持续集成构建系统比手动构建更受欢迎。随着构建系统变得更加标准化,运行触发这些构建的系统也变得更加标准化。尽管大多数配置取决于所使用的特定程序(Continuum、Cruise Control 等),但也有一些配置可以在 POM 中进行。Maven 已在通知程序元素集中捕获了一些重复设置。通知程序是通知人们某些构建状态的方式。在下面的例子中,此 POM 设置了一个类型为(表示电子邮件)的通知程序,并配置了在指定的触发器、和 而不是或mail上使用的电子邮件地址。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的配置与持续集成(CI)系统,它不是必需的,主要作为元数据记录配置与持续集成(CI)系统信息,也可以用于生成网站信息或者文档   --><ciManagement><!--   项目的配置与持续集成(CI)系统名称。如 Continuum、Cruise Control、阿里云 DevOps(云效)、腾讯云 DevOps、Jenkins 等   --><system>Continuum</system><!--   项目的配置与持续集成(CI)系统地址   --><url>http://127.0.0.1:8080/continuum</url><!--   Maven 官方认为,虽然大部分构建和触发器配置由具体的 CI 工具决定,但 Maven POM 文件 中也有一些设置可以配置,尤其是与通知相关的设置   --><notifiers><!--   指定在构建状态发生变化时,如何通知相关人员(例如通过电子邮件)   --><notifier><!--   通知的途径   --><type>mail</type><!--   发生错误时是否通知   --><sendOnError>true</sendOnError><!--   发生失败时是否通知   --><sendOnFailure>true</sendOnFailure><!--   发生成功时是否通知   --><sendOnSuccess>false</sendOnSuccess><!--   发生警告时是否通知   --><sendOnWarning>false</sendOnWarning><!--   扩展配置项   --><configuration><!--   自定义属性   --><!--   ...   --></configuration><!--   通知发送到哪里(不赞成使用)   --><address>continuum@127.0.0.1</address></notifier></notifiers></ciManagement>...
</project>

配置详细说明:

  • 顶级元素 ciManagement:持续集成系统的配置信息,如 Jenkins。
  • 一级子元素 system:持续集成系统的名字。
  • 一级子元素 issueManagement:该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。
  • 一级子元素 notifiers:构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) 。
  • 二级子元素 notifier:配置一种方式,当构建中断时,以该方式通知用户/开发者。
  • 三级子元素 type:传送通知的途径。
  • 三级子元素 sendOnError:发生错误时是否通知
  • 三级子元素 sendOnFailure:发生失败时是否通知
  • 三级子元素 sendOnSuccess:发生成功时是否通知
  • 三级子元素 sendOnWarning:发生警告时是否通知
  • 三级子元素 address:不赞成使用。通知发送到哪里。
  • 三级子元素 configuration:扩展配置项。
5.3、邮件列表

邮件列表是与项目相关人员保持联系的绝佳工具。大多数邮件列表面向开发人员和用户。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目相关邮件列表信息,它不是必需的,一般用于生成网站信息或者文档   --><!--   邮箱列表是一种早期的社区形式,它将发送到特定地址的邮件自动分发给所有订阅成员的通讯工具,用于项目团队或社区成员之间的沟通、讨论和信息共享   --><mailingLists><!--   定义一个邮件列表的具体信息   --><mailingList><!--   邮件列表的名称   --><name>User List</name><!--   发送邮件的地址或链接   --><post>user@127.0.0.1</post><!--   订阅邮件的地址或链接   --><subscribe>user-subscribe@127.0.0.1</subscribe><!--   取消订阅邮件的地址或链接   --><unsubscribe>user-unsubscribe@127.0.0.1</unsubscribe><!--   可以浏览邮件信息的 URL 地址   --><archive>http://127.0.0.1/user/</archive><!--   用于提供该邮件列表的其他存档链接   --><otherArchives><otherArchive>https://base.google.com/base/1/127.0.0.1</otherArchive></otherArchives></mailingList></mailingLists>...
</project>

配置详细说明:

  • 顶级元素 mailingLists:项目的邮件列表信息。
  • 顶级元素 mailingList:描述了项目相关的所有邮件列表。自动产生的网站引用这些信息
  • 二级子元素 name:邮件的名称
  • 二级子元素 post:发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建
  • 二级子元素 subscribe:订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建
  • 二级子元素 unsubscribe:取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建
  • 二级子元素 archive:可以浏览邮件信息的 URL。
5.4、供应链管理

SCM(软件配置管理,也称为源代码/控制管理,或简称为版本控制)是任何健康项目不可或缺的一部分。如果您的 Maven 项目使用 SCM 系统(确实如此,不是吗?),那么您可以将该信息放入 POM 中。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的源代码/版本控制管理系统,它不是必需的,主要作为元数据记录源代码仓库信息,但也有一些系统可以通过插件读取相关的值并采取相应动作   --><scm><!--   表示项目的只读连接 URL,通常用于拉取代码的操作   --><connection>scm:svn:http://127.0.0.1/svn/my-project</connection><!--   表示开发者的读写连接 URL,通常用于开发人员的代码提交操作   --><developerConnection>scm:svn:https://127.0.0.1/svn/my-project</developerConnection><!--   标识代码的版本或标签名,通常在发布过程中使用   --><tag>HEAD</tag><!--   源码仓库的网页 URL,便于用户直接查看项目的源码仓库   --><url>http://127.0.0.1/websvn/my-project</url></scm>...
</project>

配置详细说明:

  • 顶级元素 scm: 用来描述源码控制系统的详细信息。
  • 一级子元素 connection: 表示项目的只读连接 URL,通常用于拉取代码的操作。
  • 一级子元素 developerConnection: 表示开发者的读写连接 URL,通常用于开发人员的代码提交操作。
  • 一级子元素 tag: 标识代码的版本或标签名,通常在发布过程中使用,标识代码的某个稳定版本。
  • 一级子元素 url: 源码仓库的网页 URL,便于用户直接查看项目的源码仓库。
5.5、先决条件

这类标签用于定义项目的属性值和配置文件,便于项目在不同环境中的灵活性。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <prerequisites><maven>2.0.6</maven></prerequisites>...
</project>

配置详细说明:

  • 顶级元素 prerequisites: 描述了这个项目构建环境中的前提条件
  • 一级子元素 maven: 构建该项目或使用该插件所需要的Maven的最低版本。
5.6、存储库

存储库是遵循 Maven 存储库目录布局的工件集合。要成为 Maven 存储库工件,POM 文件必须位于结构中$BASE_REPO/groupId/artifactId/version/artifactId-version.pom$BASE_REPO可以是本地(文件结构)或远程(基本 URL);其余布局相同。存储库是收集和存储工件的地方。每当项目对工件有依赖关系时,Maven 将首先尝试使用指定工件的本地副本。如果本地存储库中不存在该工件,它将尝试从远程存储库下载。POM 中的存储库元素指定要搜索的备用存储库。

存储库是 Maven 社区最强大的功能之一。默认情况下,Maven 会搜索https://repo.maven.apache.org/maven2/上的中央存储库。可以在 pom.xml 的“repositories”元素中配置其他存储库。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   发现依赖和扩展的远程仓库列表   --><!--   Maven 的仓库查找顺序:1.本地仓库 > 2.项目中定义的 repositories 和 pluginRepositories 中定义的仓库 > 3.settings.xml 中定义的仓库 > 4.中央仓库(Maven Central) --><repositories><!--   定义一个发现依赖和扩展的远程仓库的具体信息   --><repository><!--   远程仓库唯一标识符、名称和 URL 地址   --><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><!--   指定仓库的布局类型,这里的选项是:default(默认的 Maven 仓库布局);legacy(旧版布局,较少使用,适用于与非常老的 Maven 仓库兼容的情况)   --><layout>default</layout><!--   用于控制仓库对快照版本的处理,包括是否启用快照版本的下载和更新策略(实际上 Maven 是允许同一个版本号下不断地发布更新的)   --><snapshots><!--   表示该仓库是否为下载某种类型构件(发布版,快照版)开启   --><enabled>true</enabled><!--   指定更新发生的频率(构建项目时通过命令行触发)。Maven会比较本地POM和远程POM的时间戳,这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)   --><updatePolicy>daily</updatePolicy><!--   当Maven验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)   --><checksumPolicy>fail</checksumPolicy></snapshots><!--   用于控制仓库对发布版本的处理,包括是否启用发布版本的下载和更新策略   --><releases><enabled>false</enabled><updatePolicy>never</updatePolicy><checksumPolicy>ignore</checksumPolicy></releases></repository></repositories>...
</project>

配置详细说明:

  • 顶级元素 repositories: 发现依赖和扩展的远程仓库列表
  • 一级子元素 repository: 包含需要连接到远程仓库的信息。
  • 二级子元素 releasessnapshots :如何处理远程仓库里发布版本的下载。如何处理远程仓库里快照版本的下载。
  • 三级子元素 enabled :true 或者 false 表示该仓库是否为下载某种类型构件(发布版,快照版)开启。
  • 三级子元素 updatePolicy :指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。
  • 三级子元素 checksumPolicy :当 Maven 验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)。
  • 二级子元素 idnameurl:远程仓库唯一标识符、名称和 URL 地址。
  • 二级子元素 layout :用于定位和排序构件的仓库布局类型-可以是 default(默认)或者 legacy(遗留)。
5.7、插件库

存储库是两种主要工件类型的所在地。第一种是用作其他工件依赖项的工件。这些是位于中央的大多数工件。另一种工件是插件。Maven 插件本身是一种特殊类型的工件。因此,插件存储库可以与其他存储库分开(尽管我还没有听到令人信服的理由这样做)。无论如何,pluginRepositories元素块的结构与元素相似repositoriespluginRepository每个元素都指定 Maven 可以找到新插件的远程位置。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   发现插件的远程仓库列表,这些插件用于构建和报表   --><pluginRepositories><!--   定义一个发现插件的远程仓库的具体信息,属性作用与 repositories 相同   --><pluginRepository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots><releases><enabled>false</enabled><updatePolicy>never</updatePolicy><checksumPolicy>ignore</checksumPolicy></releases></pluginRepository></pluginRepositories>...
</project>

配置详细说明:

  • 顶级元素 pluginRepositories: 发现插件和扩展的远程仓库列表
  • 一级子元素 ``pluginRepositorie: 包含需要连接到远程仓库的信息。内容与 repositories/repositorie` 一致。
5.8、分发管理

分发管理的作用正如其名称所示:它管理整个构建过程中生成的工件和支持文件的分发。

在 POM 中,repositories 元素指定 Maven 下载当前项目使用的远程工件的位置和方式,而 distributionManagement 指定部署后该项目将在哪里(以及如何)获取远程存储库。如果未定义 snapperRepository,则将使用存储库元素进行快照分发。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   项目的分发管理,它指定了 Maven 项目的构建产物(如 JAR、WAR 文件)最终要发布的目标位置   --><distributionManagement><!--    指定发布构建产物(如 JAR、WAR 文件)到的远程仓库    --><repository><!--   远程仓库唯一标识符、名称和 URL 地址   --><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><!--   指定仓库的布局类型,这里的选项是:default(默认的 Maven 仓库布局);legacy(旧版布局,较少使用,适用于与非常老的 Maven 仓库兼容的情况)   --><layout>default</layout><!--   用于控制仓库对快照版本的处理,包括是否启用快照版本的下载和更新策略(实际上 Maven 是允许同一个版本号下不断地发布更新的)   --><snapshots><!--   表示该仓库是否为下载某种类型构件(发布版,快照版)开启   --><enabled>true</enabled><!--   指定更新发生的频率(构建项目时通过命令行触发)。Maven会比较本地POM和远程POM的时间戳,这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)   --><updatePolicy>daily</updatePolicy><!--   当Maven验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)   --><checksumPolicy>fail</checksumPolicy></snapshots><!--   用于控制仓库对发布版本的处理,包括是否启用发布版本的下载和更新策略   --><releases><enabled>false</enabled><updatePolicy>never</updatePolicy><checksumPolicy>ignore</checksumPolicy></releases></repository><!--   用于指定存放快照版本(SNAPSHOT)的仓库,与 repository 类似   --><snapshotRepository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots><releases><enabled>false</enabled><updatePolicy>never</updatePolicy><checksumPolicy>ignore</checksumPolicy></releases></snapshotRepository><!--   指定项目站点(即项目文档和报告)发布的目标位置   --><site><!--   站点的 ID、名称和主页地址   --><id>mojo.website</id><name>Mojo Website</name><url>scp://beaver.codehaus.org/home/projects/mojo/public_html/</url></site><!--   指定构建产物的下载 URL。如果发布的构建产物需要在其他地方下载,这个 URL 就提供了一个有效的链接   --><downloadUrl>https://lizhengi.com/download</downloadUrl><!--   如果构件有了新的 group ID和 artifact ID(构件移到了新的位置),这里列出构件的重定位信息   --><relocation><groupId>org.apache</groupId><artifactId>my-project</artifactId><version>1.0</version><message>We have moved the Project under Apache</message></relocation><!--   给出该构件在远程仓库的状态 status。不得在本地项目中设置该元素,因为这是工具自动更新的     --><!--   <status>none</status>     --></distributionManagement>...
</project>

配置详细说明:

  • 顶级元素 distributionManagement: 项目分发信息,在执行 mvn deploy 后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。
  • 一级子元素 repositorysnapshotRepository:部署项目产生的构件到远程仓库需要的信息、构件的快照部署到哪里?如果没有配置该元素,默认部署到 repository 元素配置的仓库。
  • 二级子元素 idnameid用于在众多存储库中唯一地标识此存储库,并且name是人类可读的形式。
  • 二级子元素 uniqueVersion:唯一版本采用truefalse值来表示部署到此存储库的工件是否应获取唯一生成的版本号,或者使用作为地址一部分定义的版本号。
  • 二级子元素 url:这是存储库元素的核心。它指定了将构建的工件(以及 POM 文件和校验和数据)传输到存储库的位置和传输协议。
  • 二级子元素 layout:这些元素的类型和用途与在存储库元素中定义的布局元素相同。它们是defaultlegacy
  • 一级子元素 site:不仅仅是分发到存储库,distributionManagement还负责定义如何部署项目的站点和文档。
  • 二级子元素 idnameurl:这些元素与上面元素中的对应元素类似distributionManagement repository
  • 一级子元素 relocation:如果构件有了新的 group ID和 artifact ID(构件移到了新的位置),这里列出构件的重定位信息。
  • 二级子元素 groupIdartifactIdversion:构建新地址坐标。
  • 二级子元素 message:除了指定新地址外,提供一条消息解释原因也是很好的做法。
  • 一级子元素 downloadUrl:项目下载页面的 URL。如果没有指定,用户将被引导至 url 指定的主页。指定该 URL 是为了帮助查找由于许可限制而未包含在存储库中的工件。
  • 一级子元素 status:给出该构件在远程仓库的状态。不得在本地项目中设置该元素,因为这是工具自动更新的。
5.9、配置管理

POM 4.0 的一个新功能是项目能够根据构建环境更改设置。元素 profile 包含可选激活(配置文件触发器)和激活该配置文件后要对 POM 进行的一组更改。例如,为测试环境构建的项目可能指向与最终部署不同的数据库。或者,可以根据所使用的 JDK 版本从不同的存储库中提取依赖项。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">... <!--   配置管理,使项目能够根据构建环境更改设置   --><profiles><!--   单个构建环境下的配置     --><profile><id>dev</id><!--   自动触发 profile 的条件逻辑     --><activation><!--   布尔标志,确定配置文件是否默认处于活动状态。仅当没有其他配置文件通过命令行明确激活`settings.xml`或通过其他激活器隐式激活时,才会评估此标志,否则无效   --><activeByDefault>false</activeByDefault><!--   当匹配的 jdk 被检测到,profile 被激活   --><jdk>8</jdk><!--   当匹配的操作系统属性被检测到,profile 被激活   --><os><!--  激活 profile 的操作系统的名字、所属家族(如 'windows')、 操作系统体系结构、操作系统版本   --><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os><property><!--   如果 Maven 检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile 就会被激活   --><name>sparrow-type</name><value>African</value></property><!--   提供一个文件名,通过检测该文件的存在或不存在来激活 profile   --><file><!--   检查文件是否存在,如果存在则激活 profile   --><exists>${basedir}/file2.properties</exists><!--   检查文件是否存在,如果不存在则激活 profile   --><missing>${basedir}/file1.properties</missing></file></activation><!--   profile 可以重新定义大多数的一级标签属性:包括 id、modules、dependencies、dependencyManagement、build、reporting、properties、distributionManagement、repositories 以及 pluginRepositories   --><!--   profile 的作用是在特定的构建环境下根据不同需求调整项目的构建配置,而全局配置(settings.xml)和项目级配置(pom.xml)在没有冲突时依然会被使用,只有当配置重复时,profile 中的配置才会覆盖这些默认的配置。--><!--   ...   --></profile><profile><id>prod</id><activation><jdk>21</jdk></activation><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target></properties></profile></profiles>...
</project>

配置详细说明:

  • 顶级元素 profiles:在列的项目构建 profile,如果被激活,会修改构建处理。
  • 一级子元素 id:构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的 profile。。
  • 一级子元素 activation:自动触发 profile 的条件逻辑。
  • 二级子元素 activeByDefault:布尔标志,确定配置文件是否默认处于活动状态。仅当没有其他配置文件通过命令行明确激活settings.xml或通过其他激活器隐式激活时,才会评估此标志,否则无效。
  • 二级子元素 jdk:当匹配的 jdk 被检测到,profile 被激活。例如,1.4 激活 JDK1.4,1.4.0_2,而 !1.4激活所有版本不是以 1.4 开头的 JDK。
  • 二级子元素 os:当匹配的操作系统属性被检测到,profile 被激活。os 元素可以定义一些操作系统相关的属性
  • 三级子元素 name:激活 profile 的操作系统的名字
  • 三级子元素 family:激活 profile 的操作系统所属家族(如 ‘windows’)
  • 三级子元素 arch:激活 profile 的操作系统体系结构
  • 三级子元素 version:激活 profile 的操作系统版本
  • 二级子元素 property:如果 Maven 检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile 就会被激活。
  • 三级子元素 name:激活 profile 的属性的名称
  • 三级子元素 value:激活 profile 的属性的值
  • 二级子元素 file:提供一个文件名,通过检测该文件的存在或不存在来激活 profile。
  • 三级子元素 exists:检查文件是否存在,如果存在则激活 profile。
  • 三级子元素 missing:检查文件是否存在,如果不存在则激活 profile。

相关文章:

Maven 详细配置:Maven 项目 POM 文件解读

Maven 是 Java 开发领域中广泛使用的项目管理和构建工具&#xff0c;通过其核心配置文件——POM&#xff08;Project Object Model&#xff09;文件&#xff0c;开发者能够定义项目的基本信息、依赖关系、插件配置以及构建生命周期等关键要素。POM 文件不仅是 Maven 项目的核心…...

selenium

pythonselenium selenium是一个第三方库&#xff0c;python有很多库&#xff1b; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式&#xff0c;用代码去实现自动化操作和验证的行为。 2、ui自动化的优点&#xff1f; &#xff08;1&#xff09;解决重复性的功能测试…...

网络安全:设备原理与操作

设备型号概述 网络安全企业有哪些&#xff1f; 国外&#xff1a;思科&#xff0c;Juniper&#xff0c;惠普&#xff0c;3Com&#xff0c;。。。。 国内&#xff1a;华为&#xff0c;中性&#xff0c;锐捷&#xff0c;蓝盾&#xff0c;绿盟&#xff0c;山石网科&#xff0c;36…...

pytorch中nn.Conv2d详解及参数设置原则

文章目录 基础参数1. in_channels (输入通道数)2. out_channels (输出通道数)3. kernel_size (卷积核大小)4. stride (步幅)5. padding (填充)6. dilation (膨胀)7. groups (分组卷积)8. bias (偏置) 如何设置参数&#xff1f;1. **in_channels 和 out_channels&#xff08;输入…...

select下拉框,首次进入页面没有显示value的情况

bug场景&#xff1a; 类似这种bug情况排查如下&#xff1a; 首先 理解含义 options就是存放键值对的&#xff0c;id就是key&#xff0c;对上了它就自动把label显示 而且如果你用来当作key和label的字段&#xff0c;与后端返回的不一致&#xff0c;还可以进行更改 其次 排查接…...

接口项目操作图-thinkphp6-rabbitmq

一、用户开户流程 用户首次需要联系商务开通账户&#xff0c;需要提供手机号及来访问的IP。开好户之后&#xff0c;平台方将提供用户访问的key值及header头部参数的公钥加密文件、body访问参数以及返回数据的公私钥加解密文件。 二、用户请求流程 用户将拿到的key值进行rsa公钥…...

thinkphp6.0常用设计模式实例

单例模式 (Singleton) 场景&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 实际业务&#xff1a;数据库连接、日志记录器、配置管理等。 ThinkPHP 6.0 实现&#xff1a; namespace app\common;class DatabaseConnection {private static $instance …...

微服务保护——Sentinel

什么是微服务保护&#xff1f; 微服务保护是一系列用于保障微服务架构稳定、可靠运行的策略与技术手段&#xff0c;在复杂的分布式微服务系统里&#xff0c;它能避免局部故障引发连锁反应&#xff0c;从而维持整个系统的可用性&#xff0c;主要涵盖以下几个关键部分&#xff1a…...

php 多进程那点事,用 swoole 如何解决呢 ?

在 PHP 中&#xff0c;多进程的处理通常会遇到一些挑战&#xff0c;比如资源共享、进程间通信、性能优化等。Swoole 是一个高性能的协程和多进程框架&#xff0c;旨在为 PHP 提供异步、并发、协程等功能&#xff0c;解决了传统 PHP 环境中的多进程管理问题。通过使用 Swoole&am…...

STM32+ADC+DMA快速循环转换

测试平台&#xff1a;STM32F405RGT6 uint32_t AD_Buf[100]{0}; HAL_ADC_Start_DMA(&hadc2,(uint32_t *)AD_Buf,100); while(1) {printf("AD_Buf:%d\n",AD_Buf[0]); }...

移动电商的崛起与革新:以开源AI智能名片2+1链动模式S2B2C商城小程序为例的深度剖析

摘要&#xff1a;本文旨在探讨移动电商的崛起背景、特点及其对传统电商模式的革新影响&#xff0c;并以开源AI智能名片21链动模式S2B2C商城小程序为具体案例&#xff0c;深入分析其在移动电商领域的创新实践。随着移动互联网技术的飞速发展&#xff0c;移动电商已成为电商行业的…...

QT实现 端口扫描暂停和继续功能 3

上篇QT给端口扫描工程增加线程2-CSDN博客 为按钮pushButton_Stop添加clicked事件&#xff0c;功能为暂停扫描&#xff0c;并在暂停后显示继续按钮&#xff0c;点击继续按钮之后继续扫描 1.更新UI 添加继续按钮 点击转到槽则会自动声明 2. 更新 MainWindow.h 需要新增的部分…...

C_字符数组存储汉字字符串及其索引

字符串就是字符数组&#xff0c;可以定义一个char类型的数组来存储字符串。 如果要存储多个字符串则可以定义一个char类型的二维数组。 存储多个汉字字符串的话&#xff0c;可以考虑用char类型的二维数组。 不过要注意&#xff0c;一个汉字在内存中占用的字节数确实大于一个…...

Linux标准IOday1

1:思维导图 2:将 student.c这个练习题&#xff0c;改成链表后实现 头文件link.h #ifndef __STRUCT_H__ #define __STRUCT_H__ #include <stdio.h> #include <stdlib.h> typedef struct Student{char name[20];double math;double chinese;double english;double…...

SEO内容优化:如何通过用户需求赢得搜索引擎青睐?

在谷歌SEO优化中&#xff0c;内容一直是最重要的因素之一。但要想让内容真正发挥作用&#xff0c;关键在于满足用户需求&#xff0c;而不是简单地堆砌关键词。谷歌的算法越来越智能化&#xff0c;更注重用户体验和内容的实用性。 了解目标用户的需求。通过工具如Google Trends…...

API调用淘宝京东商品详情接口示例参考,json格式数据示例

以下是API调用淘宝和京东商品详情接口的JSON格式数据示例&#xff1a; 淘宝商品详情接口JSON数据示例 淘宝商品详情接口&#xff08;通常称为item_get或类似的名称&#xff09;是淘宝开放平台提供的一个API接口&#xff0c;允许开发者根据商品的ID&#xff08;Item ID&#x…...

css实现垂直文本

效果 知识 writing-mode: <value>; 可选值 horizontal-tb: 默认值。文本从左到右&#xff08;或从右到左&#xff09;排列&#xff0c;然后从上到下。vertical-rl: 文本从上到下排列&#xff0c;然后从右到左。适用于垂直书写的方向&#xff0c;如日语和中文。vertica…...

【AI日记】25.01.07

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales 读书 书名&#xff1a;国家为什么会失败阅读原因&#xff1a;2024 年诺贝尔经济学奖得主的力作&#xff0c;之前我已经读过他另一…...

logback日志

一、使用两个以上spring环境变量做三目操作 <springProperty name"application_name" scope"context" source"spring.application.name"/><springProperty name"trace_app_name" scope"context" source"sprin…...

Android NDK开发入门3之基本语法

JNI语法基础 函数生成语法&#xff1a; extern “ C” 作⽤&#xff1a;避免编绎器按照C的⽅式去编绎C函数 1、C不⽀持函数的重载&#xff0c;编译之后函数名不变&#xff1b; 2、C⽀持函数的重载&#xff08;这点与Java⼀致&#xff09;&#xff0c;编译之后函数名会改变…...

unity学习9:unity的Asset 导入和导出

目录 1 Assets 资产/资源 1.1 编辑器里Assets 和explorer文件夹 里一一对应 1.2 在编辑器里操作&#xff0c;和文件夹内操作&#xff0c;多数相同还是有些不同 2 往Assets里导入零散文件 2.1 往Assets里导入零散文件 2.2 把fbx文件导入到hierarcy /scene 里&#xff0c;…...

Unity学习笔记(七)使用状态机重构角色攻击

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 攻击状态重构 首先我们重构攻击状态的动画 之前的动画&#xff0c;我们是使用状态(isAttacking)攻击次数(comboCounter)完成动画的过渡&#xff0c;这样虽然能完成功能&#xff0c;但是如…...

【整理集合大全】MySQL(4) 数据库增删改查SQL语句

查看数据库 show databases; 使用数据库 use 数据库名;创建数据库 CREATE DATABASE 数据库名;删除数据库 DROP DATABASE 数据库名;创建表 create table 表名(列名1 类型(长度) [约束],列名2 类型(长度) [约束],…… );长度区别 int类型带长度&#xff1a;不影响存取值&…...

Flutter 鸿蒙化 flutter和鸿蒙next混和渲染

前言导读 这一个节课我们讲一下PlatformView的是使用 我们在实战中有可能出现了在鸿蒙next只加载一部分Flutter的情况 我们今天就讲一下这种情况具体实现要使用到我们的PlatformView 效果图 具体实现: 一、Native侧 使用 DevEco Studio工具打开 platform_view_example\oho…...

Flask返回浏览器无乱码方法

# -*- coding: utf-8 -*- from flask import Flask, request, jsonify, Response import os import json import re from datetime import datetime import logging import sys import crawling_web_knowledgeapp Flask(__name__)app.json.ensure_ascii False # 解决中文乱码…...

Tauri教程-基础篇-第二节 Tauri的核心概念下篇

“如果结果不如你所愿&#xff0c;就在尘埃落定前奋力一搏。”——《夏目友人帐》 “有些事不是看到了希望才去坚持&#xff0c;而是因为坚持才会看到希望。”——《十宗罪》 “维持现状意味着空耗你的努力和生命。”——纪伯伦 Tauri 技术教程 * 第四章 Tauri的基础教程 第二节…...

直播预告|StarRocks 3.4,打造 AI 时代的智能数据基座,应用场景全面扩展

随着新年的到来&#xff0c;StarRocks 3.4 即将上线&#xff0c;为 AI Workload 和更多应用场景提供强大支持&#xff01;此次升级聚焦于提升 AI 场景支持&#xff0c;并扩展更多应用场景&#xff0c;全方位提升数据分析体验。 更强的 AI 场景支持&#xff1a; 引入 Vector In…...

Maven的基本使用

Maven apache 旗下的开源项目&#xff0c;是一款用于管理构建Java的项目的工具 一 作用 1依赖管理&#xff1a;管理jar包&#xff0c;避免依赖冲突 2统一项目结构 &#xff1a; 3项目构建&#xff1a; 二 安装 下面是全球唯一的中央仓库 https://repo1.maven.org/maven2…...

【深度学习入门_基础篇】线性代数本质

开坑本部分主要为基础知识复习&#xff0c;新开坑中&#xff0c;学习记录自用。 学习目标&#xff1a; 熟悉向量、线性组合、线性变换、基变换、矩阵运算、逆函数、秩、列空间、零空间、范式、特征指、特征向量等含义与应用。 强烈推荐此视频&#xff1a; 【官方双语/合集】…...

数据库模型全解析:从文档存储到搜索引擎

目录 前言1. 文档存储&#xff08;Document Store&#xff09;1.1 概念与特点1.2 典型应用1.3 代表性数据库 2. 图数据库&#xff08;Graph DBMS&#xff09;2.1 概念与特点2.2 典型应用2.3 代表性数据库 3. 原生 XML 数据库&#xff08;Native XML DBMS&#xff09;3.1 概念与…...

LED背光驱动芯片RT9293应用电路

一&#xff09;简介&#xff1a; RT9293 是一款高频、异步的 Boost 升压型 LED 定电流驱动控制器&#xff0c;其工作原理如下&#xff1a; 1&#xff09;基本电路结构及原理 RT9293的主要功能为上图的Q1. Boost 电路核心原理&#xff1a;基于电感和电容的特性实现升压功能。当…...

Ubuntu挂载云盘操作步骤

1. 查看磁盘分区情况 使用 fdisk -l 命令查看当前系统中所有磁盘的分区情况&#xff0c;找到需要挂载的云盘设备&#xff0c;例如/dev/vdc。 2. 创建新分区 使用 fdisk /dev/vdc 命令对云盘进行分区操作&#xff1a; 输入n创建新分区。 输入p选择创建主分区。 输入1指定分区…...

【中间件】docker+kafka单节点部署---zookeeper模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言消息中间件介绍1. KRaft模式2. zookeeper模式2.1. 单节点部署安装验证 前言 最近生产环境上准备部署ELFK日志监控&#xff0c;先在测试环境部署单节点kafka验证…...

Arduino IDE刷微控制器并下载对应固件的原由

在使用Arduino IDE刷写某个微控制器时&#xff0c;下载对应的固件通常是为了确保微控制器能够正确识别和执行Arduino IDE中编写的代码。以下是对这一过程的详细解释&#xff1a; 一、固件的作用 固件是微控制器或嵌入式设备上运行的软件&#xff0c;它负责控制硬件设备的操作…...

深兰科技董事长陈海波应邀为华东师大心理学专业师生做AI专题讲座

12月28日&#xff0c;应上海华东师范大学的邀请&#xff0c;上海市科协常委、上海交通大学博士生导师、深兰科技创始人兼董事长陈海波专程到校&#xff0c;为该校心理学专业的全体师生做了一场关于人工智能推动个人数字化未来的专题讲座。 他在演讲中&#xff0c;首先详细讲述了…...

iOS - 引用计数(ARC)

1. 基本数据结构 // 对象结构 struct objc_object {isa_t isa; // isa 指针&#xff0c;包含引用计数信息 };// isa 的位域结构 union isa_t {uintptr_t bits;struct {uintptr_t nonpointer : 1; // 是否启用优化的 isa 指针uintptr_t has_assoc : 1; // 是…...

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性&#xff08;五大功能域&#xff09; 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …...

Flux“炼丹炉”——fluxgym安装教程

一、介绍 这个炼丹炉目前可以训练除了flux-dev之外的其它模型&#xff0c;只需更改一个配置文件内容即可。重要的是训练时不需要提前进行图片裁剪、打标等前置工作&#xff0c;只需下图的三个步骤即可开始训练。它就是——fluxgym。 fluxgym&#xff1a;用于训练具有低 VRAM &…...

【Jsoncpp】manipulating JSON data in C++

源代码 #include <iostream> // 引入输入输出流库&#xff0c;用于标准输入输出操作 #include <fstream> // 引入文件流库&#xff0c;用于文件读写操作 #include <json/json.h> // 引入JSON库&#xff0c;用于解析和操作JSON数据using namespace std; …...

Ardupilot开源无人机之Geek SDK进展2024

Ardupilot开源无人机之Geek SDK进展202501 1. 源由2. 状态3. TODO3.1 跟踪目标框3.2 onnxruntime版本3.3 CUDA 11.8版本3.4 pytorch v2.5.1版本3.5 Inference性能3.6 特定目标集Training 4. 参考资料 1. 源由 前期搭建《Ardupilot开源无人机之Geek SDK》&#xff0c;主要目的是…...

肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)

大家好&#xff01;我是凯哥&#xff0c;今天给大家分享一下云计算学习路线图。这是我按照自己最开始学习云计算的时候的学习路线&#xff0c;并且结合自己从业多年所涉及的知识精心总结的云计算的思维导图。这是凯哥精心总结的&#xff0c;花费了不少精力哦&#xff0c;希望对…...

配置数据的抗辐照加固方法

SRAM 型FPGA 的配置存储器可以看成是由0 和1 组成的二维阵列&#xff0c;帧的高度为矩阵阵列的高度&#xff0c;相同结构的配置帧组成配置列&#xff0c;如CLB 列、IOB 列、输入输出互联(Input Output Interconnect,IOI)列、全局时钟(Global Clock, GCLK)列、BRAM 列和BRAM 互联…...

【linux系统之redis6】处理可视化工具无法连接服务器端的redis

redis跑在虚拟机上的linux系统是可以正常的&#xff0c;但是用宿主机的可视化工具链接就连不上 可视化工具无法连接 问题排查 确保配置文件开启了bind 0.0.0.0,允许外部任何终端的链接密码确保正确要关闭linux系统的防火墙(我的属于这种) systemctl stop firewalld.servic…...

云计算操作系统的核心-OpenStack框架全解析

文章目录 一、OpenStack简介二、OpenStack架构1.认证服务Keystone2.镜像服务Glance3.计算服务Nova4.块存储服务Clinder5.对象存储服务Swift6.网络服务Neutron7.计量服务Ceilometer 三、服务简介3.1 OpenStack界面管理3.2 Keystone 认证3.3 Glance3.3 Nova3.4 存储服务3.5 Neutr…...

【设计模式-2】23 种设计模式的分类和功能

在软件工程领域&#xff0c;设计模式是解决常见设计问题的经典方案。1994 年&#xff0c;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides&#xff08;四人帮&#xff0c;GoF&#xff09;在《设计模式&#xff1a;可复用面向对象软件的基础》一书中系统性地总结了…...

记录一下Coding一直不能clone

配置 下载git客户端&#xff0c;进行配置 git config --list user.name姓名全称 user.emailIAM_xxxxxx.com ,这个就是你的邮箱地址 user.signingkey 注册coding平台的密码 一般不需要配置公钥私钥 下载TortoiseGit&#xff0c;配置这几个参数 配置凭据管理器 注意 这里用户名是…...

Backend - C# EF Core 执行迁移 Migrate

目录 一、创建Postgre数据库 二、安装包 &#xff08;一&#xff09;查看是否存在该安装包 &#xff08;二&#xff09;安装所需包 三、执行迁移命令 1. 作用 2. 操作位置 3. 执行&#xff08;针对visual studio&#xff09; 查看迁移功能的常用命令&#xff1a; 查看…...

检索增强生成 和思维链 结合: 如何创建检索增强思维链 (RAT)?

论文地址&#xff1a;https://arxiv.org/pdf/2403.05313 Github地址&#xff1a;https://github.com/CraftJarvis/RAT 想象一下&#xff0c;一个人工智能助手可以像莎士比亚一样写作&#xff0c;像专家一样推理。这听起来很了不起&#xff0c;对吧&#xff1f;但是&#xff0…...

第四届电子信息与通信工程国际学术会议(EICE 2025)

第四届电子信息与通信工程国际学术会议&#xff08;EICE 2025&#xff09;定于2025年1月10日至12日在中国广州举行。大会交流全球相关领域科技学术最新发展趋势&#xff0c;链接重点领域国内外顶尖、活跃、最新学术资源&#xff0c;通过经验分享和智慧碰撞&#xff0c;推动科研…...

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录

1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件&#xff0c;此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…...