• Maven第四章:配置文件详解


    Maven第四章:配置文件详解

    前言

    本章重点知识:掌握setting.xml配置文件以及pom.xml配置文件

    setting.xml配置文件

    setting.xml文件用于配置Maven的运行环境,包括本地仓库的位置、镜像仓库的配置、认证信息等。以下是setting.xml文件的详细说明:

    1. 文件位置:
      • 全局配置文件:${M2_HOME}/conf/settings.xml,对操作系统所有者生效。
      • 用户配置文件:user.home/.m2/settings.xml,只对当前操作系统的使用者生效。
    2. 配置文件优先级:
      • 局部配置优先于全局配置。配置优先级从高到低为:pom.xml > user settings > global settings。
      • 如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。
      • 如果全局配置和用户配置都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml。
    3. 配置项说明:
      • :指定本地仓库的位置,Maven会在这个目录下查找依赖项。
      • :定义镜像仓库的配置,包括镜像仓库的ID、URL和镜像范围。通过配置多个``元素,可以实现多个镜像仓库的配置。
      • :用于配置认证信息,包括服务器ID、username和password。在从远程仓库下载依赖项时,需要使用这些认证信息进行身份验证。
      • :用于定义一个或多个配置文件,可以包含多个元素,每个元素对应一个特定的配置文件。通过在命令行中传递不同的-P参数,可以激活不同的配置文件。
      • :用于指定默认激活的配置文件。如果没有传递任何-P参数,Maven会使用这里指定的配置文件。
      • :用于指定额外的插件组,可以通过-pluginGroup参数来指定要使用的插件组。
      • :用于配置代理服务器的设置,包括代理服务器的ID、地址和端口等信息。如果需要使用代理服务器下载依赖项,需要在这里进行配置。

    Maven 的 settings.xml 文件是用于配置 Maven 运行环境和构建行为的配置文件。

    localRepository
    1. 在文件中找到 标签,这是配置私有仓库的地方。
    2. 标签中添加你的私有仓库配置。每个仓库需要一个 标签,其中包含仓库的 ID、URL 和其它相关信息。例如:
     <localRepository>/path/to/local/repolocalRepository>
    
    • 1
    pluginGroups
    1. 在文件中找到 标签,这是配置私有仓库的地方。
    2. pluginGroup 标签中添加你的私有插件组。例如:
     <pluginGroups>
        <pluginGroup>com.your.pluginspluginGroup>
      pluginGroups>
    
    • 1
    • 2
    • 3
    servers
    1. 在文件中找到 标签,这是配置私有仓库的地方。
    2. server 标签中添加你的私有仓库账户、密码。每个server标签,其中包含 ID、username和password相关信息。例如:
    deploymentRepo repouser repopwd
    repositories
    1. 在文件中找到 标签,这是配置私有仓库的地方。
    2. repository 标签中添加你的私有仓库配置。每个私有仓库服务包含ID、URL 相关信息。例如:
    <repositories>  
      <repository>  
        <id>my-private-repoid>  
        <url>http://my-private-repo.example.com/repo/url>  
      repository>  
    repositories>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    mirrors
    1. 在文件中找到 标签,配置多个镜像。
    2. mirror 标签中添加你的镜像配置。每个镜像需要一个 mirror 标签,其中包含仓库的 ID、name、URL、mirrorOf 相关信息。例如:
    <mirrors>
    	 <mirror>
          <id>alimavenid>
          <name>aliyun mavenname>
          <url>http://maven.aliyun.com/nexus/content/groups/public/url>
          <mirrorOf>centralmirrorOf>        
        mirror>
      mirrors>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    properties
    1. 在文件中找到 标签
    2. properties 标签中添加你全局属性
    <properties>  
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>  
        <maven.compiler.source>1.8maven.compiler.source>  
        <maven.compiler.target>1.8maven.compiler.target>  
      properties>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    pom.xml配置文件

    pom.xml文件是Maven项目的核心配置文件,用于定义项目的构建信息、依赖项、插件等。以下是pom.xml文件的详细说明:

    • 文件位置:
      • Maven项目的根目录下。
    • 配置项说明:
      • :指定项目的唯一标识符、名称、版本号等信息。
      • :指定项目对象的模型版本号,通常为4.0.0。
      • :指定项目的组ID,通常为公司或组织的唯一标识符。
      • :指定项目的Artifact ID,通常为项目的唯一标识符。
      • :指定项目的版本号。
      • :指定项目的打包方式,如jar、war等。
      • :指定项目的名称。
      • :指定项目的URL地址。
      • :用于定义项目相关的属性,可以在这里配置一些自定义的属性。
      • :用于定义项目的依赖项,可以在这里添加多个``元素来指定具体的依赖项。每个依赖项包括groupId、artifactId和version等信息。
      • :用于定义项目使用的存储库,可以在这里添加多个``元素来指定具体的存储库信息。
      • :用于定义项目的构建配置,包括编译、打包、测试等过程。可以在这里配置一些插件、构建脚本等信息。
      • :用于定义项目报告的生成方式,包括文档生成、测试报告等。可以在这里配置一些插件、报告模板等信息。
    • 配置文件优先级:
      • 子模块继承父模块的配置,元素会继承父模块的配置,其他元素不会继承。如果子模块中定义了相同的元素,会覆盖父模块中的配置。
    • 其他说明:
      • pom.xml文件是XML格式的文件,使用``标签来定义不同的配置项。
      • 在pom.xml文件中,可以使用一些特殊的标记,如``用于包含特殊字符的文本。
      • pom.xml文件中的配置项可以根据需要进行调整和扩展,以满足具体的项目需求。
    1. 添加Maven插件:将maven-compiler-plugin插件添加到构建中,用于编译Java源代码。版本号为3.8.1,源代码编译版本号为1.8,目标运行环境版本号为1.8。配置如下:
    <build>  
      <plugins>  
        <plugin>  
          <groupId>org.apache.maven.pluginsgroupId>  
          <artifactId>maven-compiler-pluginartifactId>  
          <version>3.8.1version>  
          <configuration>  
            <source>1.8source>  
            <target>1.8target>  
          configuration>  
        plugin>  
      plugins>  
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 添加资源文件:将src/main/resources目录下的所有文件作为资源文件,并在构建时进行过滤处理。例如,可以在资源文件中包含配置文件和图片等,并在构建时将它们复制到目标目录中。
    <build>  
      <resources>  
        <resource>  
          <directory>src/main/resourcesdirectory>  
          <filtering>truefiltering>  
        resource>  
      resources>  
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 定义构建阶段和命令:将maven-jar-plugin插件添加到构建中,并在compile阶段执行该插件的jar目标。这将生成一个JAR文件。
    <build>  
      <plugins>  
        <plugin>  
          <groupId>org.apache.maven.pluginsgroupId>  
          <artifactId>maven-jar-pluginartifactId>  
          <version>3.2.0version>  
          <executions>  
            <execution>  
              <id>make-a-jarid>  
              <phase>compilephase>  
              <goals>  
                <goal>jargoal>  
              goals>  
            execution>  
          executions>  
        plugin>  
      plugins>  
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 定义项目依赖项:
    <dependencies>  
      <dependency>  
        <groupId>com.google.guavagroupId>  
        <artifactId>guavaartifactId>  
        <version>28.2-jreversion>  
      dependency>  
      <dependency>  
        <groupId>org.apache.commonsgroupId>  
        <artifactId>commons-lang3artifactId>  
        <version>3.12.0version>  
      dependency>  
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 定义统一版本管理

    dependencyManagement 标签来定义统一版本管理 。。在 标签内部,可以添加 标签来指定项目所依赖的外部库、组件或服务。每个依赖项由一个或多个 标签组成,每个 标签包含以下属性:

    • groupId:依赖项的组织ID,用于唯一标识依赖项的提供者。
    • artifactId:依赖项的唯一ID,用于唯一标识依赖项。
    • version:依赖项的版本号。

    通过在 dependencyManagement 标签中指定依赖项的版本号,可以确保项目中所有依赖项的版本号都是一致的,避免了因版本号不一致而引起的冲突问题。

    <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.0modelVersion>  
      <groupId>com.examplegroupId>  
      <artifactId>my-projectartifactId>  
      <version>1.0-SNAPSHOTversion>  
      <dependencyManagement>  
        <dependencies>  
          <dependency>  
            <groupId>com.google.guavagroupId>  
            <artifactId>guavaartifactId>  
            <version>28.2-jreversion>  
          dependency>  
          <dependency>  
            <groupId>org.apache.commonsgroupId>  
            <artifactId>commons-lang3artifactId>  
            <version>3.12.0version>  
          dependency>  
        dependencies>  
      dependencyManagement>  
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    1. 配置中央仓库 :在pom.xml文件中,找到repositories标签。添加一个repository标签,用于指定中央仓库的URL。以下是一个示例:
    <repositories>  
      <repository>  
        <id>centralid>  
        <name>Central Repositoryname>  
        <url>https://repo.maven.apache.org/maven2url>  
      repository>  
    repositories>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    pom.xml 与setting.xml配置优先级如何?

    pom.xml是Maven项目的核心配置文件,用于定义项目的构建信息、依赖项、插件等。它包含了项目的构建配置和依赖关系,是每个Maven项目的必需文件。

    setting.xml是Maven的全局配置文件,用于设置Maven运行的环境和参数。它包含了Maven的运行配置,如本地仓库的位置、镜像仓库的配置、代理服务器的设置等。

    当pom.xml和setting.xml中的配置发生冲突时,通常来说,pom.xml中的配置具有更高的优先级。这是因为pom.xml是针对特定项目的配置文件,它包含了项目的具体构建信息和依赖关系,而这些信息是在项目构建过程中直接使用的。而setting.xml中的配置是全局性的,它对所有的Maven项目都生效,但不会影响具体的项目构建过程。

    其他中央仓库

    国内有一些Maven镜像库可供使用,其中比较知名的包括:

    1. 阿里云镜像仓库:https://maven.aliyun.com/repository/public
    2. 华为云镜像仓库:https://mirrors.huaweicloud.com/repository/maven/

    这些镜像库通常会提供与中央仓库类似的存储库服务,包括对Maven依赖项的存储和管理。使用国内镜像库可以加快依赖项的下载速度,同时也可以避免在国际网络环境下可能遇到的问题,如网络延迟、连接不稳定等。

    要使用国内镜像库,需要在pom.xml文件中进行相应的配置。一种方法是配置镜像仓库的地址,将地址替换为国内镜像库的地址。另一种方法是配置Maven设置文件(settings.xml),在其中添加相应的镜像仓库配置。

    需要注意的是,使用国内镜像库时需要注意其提供的依赖项是否与项目需求相符合,同时也要注意其更新频率和稳定性等方面的问题。

    在这里插入图片描述

  • 相关阅读:
    在 IIS 上构建静态网站
    基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码
    Linux Podman安装MySQL数据库
    【猛地学】vxe-table(支持大数据量的可编辑vue表格插件)
    读书郎通过上市聆讯:平板业务毛利率走低,2021年利润同比下滑11%
    人才早已过剩,计算机专业还值得报吗?
    【小呆的概率论学习笔记】抽样调查之用抽样样本估计母体数字特征
    C语言:写文件(附完整源码)
    目标检测YOLO实战应用案例100讲-基于YOLOv5的航拍图像旋转目标检测(下)
    python推导式&全局变量&多参数传参&装饰器
  • 原文地址:https://blog.csdn.net/RodJohnsonDoctor/article/details/134069275