从零搭建xxl-job(一) :单体项目多模块项目搭建

maven配置:

属性解释:

<groupId>

在Maven中,groupId是一个项目的唯一标识符,它通常是公司或组织的反向域名,例如com.example.project。groupId在Maven的依赖管理中也非常重要,因为它可以确保依赖项的唯一性。当我们使用Maven构建项目时,groupId需要与项目中所有依赖项的groupId保持一致,这样才能正确地解析和下载依赖项。因此,在定义groupId时需要考虑到项目的唯一性和可识别性。

<artifactId>:

在 Maven 中,ArtifactId 是指项目的唯一标识符。它通常用于区分不同的项目或模块。在一个 Maven 工程中,ArtifactId 用来命名生成的 jar 或 war 包,同时也会在 pom.xml 文件中使用,作为依赖项的标识符。简单来说,ArtifactId 就是项目或模块的名称。

<version>:

在Maven的pom.xml文件中,version字段表示项目的版本信息。它是一个字符串,通常包含三个部分:major version(主要版本号),minor version(次要版本号)和 patch version(修订版本号)。例如,一个完整的version可能如下:1.0.0。

当Maven项目发布时,version号会随着项目的迭代而更新。通过检查项目的version字段,可以了解项目的最新版本信息。

<modelVersion>:

在Maven的pom.xml文件中,modelVersion字段表示该文档遵循的Maven模型版本。它是一个字符串,通常表示为:4.2.0。在这个版本中,Maven使用了Java语言的DOM(Document Object Model)来解析pom.xml文件。

检查modelVersion可以了解当前pom.xml文件所遵循的Maven模型版本,以便在解析时正确处理文件。

<finalName>:

在Maven的pom.xml文件中,finalName字段表示构建后的文件或目录的名称。它是一个字符串,通常包含项目名称和版本信息。例如:my-project-1.0.0。

当Maven项目构建完成后,finalName字段会决定构建后的文件或目录的名称。

<repositoryId>:

在Maven的pom.xml文件中,repositoryId字段表示Maven仓库的ID。它是一个字符串,通常是一个唯一的标识符。例如:com.example。

repositoryId用于标识Maven仓库的位置,以便Maven可以查找和下载项目依赖。


<execution>:

在Maven的pom.xml文件中,execution字段表示一个构建操作。它是一个字典,包含关于构建操作的详细信息,如插件名称、参数等。例如:

```xml
<execution>
  <id>my-plugin</id>
  <goals>
    <goal>compile</goal>
  </goals>
</execution>
```

在这个例子中,execution表示一个名为my-plugin的构建操作,包括编译目标。通过遍历和处理这些execution元素,可以定义Maven项目如何进行构建。

<exclusions>:

在Maven的pom.xml文件中,exclusions字段表示一个依赖排除。它是一个列表,包含要排除的依赖项的groupId和artifactId。例如:

```xml
<dependency>
  <groupId>com.example</groupId>
  <artifactId>shared-library</artifactId>
  <version>1.0.0</version>
  <exclusions>
    <exclusion>
      <groupId>com.another</groupId>
      <artifactId>another-dependency</artifactId>
    </exclusion>
  </exclusions>
</dependency>
```

在这个例子中,com.example的shared-library依赖项被排除,因为它依赖于com.another的another-dependency。通过定义exclusions,可以实现在项目依赖中排除某些依赖项。
 

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>${maven-jar-plugin.version}</version><configuration><archive><manifest><mainClass>${start-class}</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><Class-Path>./</Class-Path></manifestEntries></archive></configuration></plugin>

这段XML代码是Maven(一个Java项目构建工具)中的一个配置部分。它用于定义一个项目的打包配置,特别是jar(Java Archive)文件的内容。

1. `<configuration>`:表示一个配置元素的开始。
2. `<archive>`:表示一个打包配置的详细信息。
3. `<manifest>`:表示一个jar文件中的Manifest(清单)部分。Manifest是一个元数据,用于描述jar文件及其类文件的内容。
4. `<mainClass>`:表示jar文件中的主类。在运行时,这个类将是第一个被加载的。这个元素通常在`<execution>`部分使用,但在这里它是在全局范围内使用的。
5. `<addClasspath>`:表示是否在manifest中添加类路径。在这个例子中,它是`true`,这意味着类路径将添加到manifest中。
6. `<classpathPrefix>`:表示类路径的前缀。在这个例子中,它是`lib/`,这意味着类路径将使用这个前缀。
7. `<manifestEntries>`:表示要在manifest中添加的其他条目。在这个例子中,只有一个条目:`<Class-Path>`,它表示jar文件的根目录。

这段代码的主要作用是定义一个Maven项目如何打包,以及打包后的jar文件应包含哪些元数据。

    <!-- 远程仓库地址 --><pluginRepositories><pluginRepository><id>nexus</id><name>Team Nexus Repository</name><url>https://nexus.code.hzmantu.com/repository/java-public/</url></pluginRepository></pluginRepositories>    <!-- 配置远程发布到私服,mvn deploy --><distributionManagement><!-- 定义releases库的坐标 --><repository><id>releases</id><name>Nexus Release Repository</name><url>https://nexus.code.hzmantu.com/repository/java-releases/</url></repository><!-- 定义snapshots库 --><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>https://nexus.code.hzmantu.com/repository/java-snapshots/</url></snapshotRepository></distributionManagement>

这段XML代码是用于配置Maven项目的远程发布功能。它定义了两个仓库:releases和snapshots。这两个仓库都位于Nexus服务器(https://nexus.code.hzmantu.com/)上。

releases仓库用于存储稳定版本的软件包,snapshots仓库用于存储开发版本的软件包。Maven在执行deploy命令时,会自动将项目生成的jar文件部署到相应的仓库中。

实现原理:Maven的实现机制是使用Archetype(模板)和POM(项目描述文件)来管理项目的依赖关系。在项目的pom.xml文件中,我们可以配置distributionManagement标签,来指定远程发布的仓库坐标。当执行mvn deploy命令时,Maven会自动将项目生成的jar文件部署到指定的仓库中。

用途:通常情况下,我们不需要手动配置仓库。Maven的默认配置会自动使用本地仓库(~/.m2/repository)。当项目需要发布到远程仓库时,需要手动配置releases和snapshots仓库。

注意事项:确保Nexus服务器已经正确配置,并且本机可以访问到Nexus服务器。同时,确保本机上已经安装了Maven工具。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度副总裁秒批离职,00后的职场逆袭?

“员工闹分手提离职我秒批”&#xff0c;百度副总裁璩静的职场经历和思考在近期引发了大量讨论。 璩静在小红书分享了自己作为女性管理者&#xff0c;面对团队内部的感情问题&#xff0c;是如何处理的&#xff1a; “我第一时间就跟这个年轻的女孩子说&#xff0c;你走吧&…

SAP 财务借贷理解

以下只是个人理解&#xff0c;如果觉得有问题&#xff0c;千万别被带偏哈&#xff1a; 1、了解一些俚语&#xff1a; 有借必有贷&#xff0c;借贷必相等 资产 负债 所有者权益 收入 - 费用 利润 T字记账 2、 资产 、负债 、所有者权益、收入 、费用 、 利润 哪些增加或者减少…

如何创建git并上传

Git的配置和上传主要涉及以下步骤&#xff1a; 一、Git的配置 安装Git&#xff1a;首先&#xff0c;你需要在你的计算机上安装Git。这通常可以通过访问Git的官方网站并按照其提供的安装指南来完成。 注册GitHub账户&#xff08;如果你还没有的话&#xff09;&#xff1a;在Gi…

18、ESP32 ESP-NOW 点对点通信

ESP-NOW 是乐鑫自主研发的无连接通信协议&#xff0c;具有短数据包传输功能。该协议使多个设备能够以简单的方式相互通信。 ESP-NOW 功能 ESP-NOW 支持以下功能&#xff1a; 加密和未加密的单播通信;混合加密和未加密的对等设备;最多可携带 250 字节 的有效载荷;发送回调功能…

苹果免签封装的优势和安全风险

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;许多小伙伴应该都知道&#xff0c;App Store一直是iOS应用的主要分发渠道&#xff0c;苹果生态系统的监管是十分严格的&#xff0c;以此确保了应用质量与用户的安全。而苹果免签封装则是有一种不需要通过…

【EasySpider】EasySpider+mysql执行配置异常

问题 使用易采集工具操作时候&#xff0c;遇到一个执行异常&#xff0c;后来发现没有选择数据类型 Loading stealth.min.js MySQL config file path: ./mysql_config.json 成功连接到数据库。 Successfully connected to the database. Traceback (most recent call last):…

如何练英语口语?三个简单练习方法

如何练英语口语&#xff1f;在全球化日益加速的今天&#xff0c;英语已经成为了一种必不可少的交流工具。对于很多人来说&#xff0c;尤其是那些想要在国际舞台上崭露头角的人&#xff0c;流利的英语口语更是必不可少的技能。但是&#xff0c;很多人也面临着一个问题&#xff1…

【Flutter】App内购支付集成 Google和Apple支付和服务器验证全流程

Flutter支付集成 前言&#xff1a; 以谷歌内购为例&#xff0c;我们需要做的总共为三步 需要在谷歌市场配置商品&#xff0c;设置测试渠道&#xff0c;配置开发者账号&#xff0c;设置对应权限。配置完商品之后&#xff0c;如何在 Flutter 中获取到商品&#xff0c;购买指定…

Unity技术学习:渲染大量物体的解决方案,外加RenderMesh、RenderMeshInstanced、RenderMeshIndirect的简单使用

叠甲&#xff1a;本人比较菜&#xff0c;如果哪里不对或者有认知不到的地方&#xff0c;欢迎锐评&#xff08;不玻璃心&#xff09;&#xff01; 导师留了个任务&#xff0c;渲染大量的、移动的物体。 寻找解决方案&#xff1a; 当时找了几个解决方案&#xff1a; 静态批处…

手把手教你解决FP独立站收款问题

独立站成为了许多跨境卖家的首选平台&#xff0c;尤其是对于那些销售FP产品的卖家来说&#xff0c;它提供了一个更为宽松的经营环境。然而&#xff0c;FP独立站虽然规避了平台审核的风险&#xff0c;却面临着另一个挑战——收款问题。 由于FP产品属于敏感领域&#xff0c;与普货…

面试集中营—JVM篇

一、JVM内存模型 线程独占&#xff1a;栈&#xff0c;本地方法栈&#xff0c;程序计数器; 线程共享&#xff1a;堆&#xff0c;方法区 虚拟机栈&#xff1a;线程私有的&#xff0c;线程执行方法是会创建一个栈阵&#xff0c;用来存储局部变量表&#xff0c;操作栈&#xff0c;…

淘宝天猫API接口大全:商品详情商品接口,以图搜索淘宝商品接口,拍立淘接口

淘宝天猫API接口为开发者提供了丰富的功能&#xff0c;以下是关于商品详情接口、以图搜索淘宝商品接口以及拍立淘接口的一些介绍&#xff1a; 商品详情接口&#xff1a; 接口功能&#xff1a;允许用户通过商品ID或商品链接获取商品的详细信息&#xff0c;如标题、价格、销量、…

多个开源的js补环境框架测试

原文链接&#xff1a;https://mp.weixin.qq.com/s/uEMFGpE5bqmTvzSgX2twvA 前言 在做js逆向时肯定会遇到补环境的情况&#xff0c;看到github开源了好几个补环境用的框架&#xff0c;这篇文章做个测试&#xff0c;看看哪个比较好用。 https://github.com/pysunday/sdenvhttp…

python直接发布到网站wordpress之三批量发布图片

在前面的文章中&#xff0c;实现了使用python操作wordpress发布文字内容和图片内容。 python直接发布到网站wordpress之一只发布文字-CSDN博客 python直接发布到网站wordpress之二发布图片-CSDN博客 不过&#xff0c;此时发布图片的数量只能是一张图片。但在实际应用中&…

电脑桌面备忘录在哪里设置?好用的电脑桌面备忘录软件

在日常工作和生活中&#xff0c;电脑桌面备忘录的重要性不言而喻。想象一下&#xff0c;在繁忙的工作中&#xff0c;你能够一眼看到桌面上的备忘录提醒&#xff0c;从而及时完成重要任务&#xff0c;或者在紧张的学习中&#xff0c;通过备忘录快速回顾关键知识点。一款优秀的电…

深入理解MySQL的二进制日志(Binlog)

MySQL的二进制日志&#xff08;binlog&#xff09;是MySQL数据库中一个关键的组件&#xff0c;主要用于记录数据库中所有修改数据或潜在影响数据的语句&#xff0c;以便用于各种重要的数据库操作如复制、数据恢复、审计等。本文将详细介绍MySQL二进制日志的工作原理、配置方法、…

HIVE函数的基本使用

HIVE函数的基本使用 1.查看所有支持的函数 共289个 1)SHOW FUNCTIONS 查看所有支持的函数 共289个 2)SHOW FUNCTIONS LIKE "**" 模糊查询函数名 3)DESC FUNCTION 函数名 可以查看函数的具体使用方法 show functions; show functions like "*c…

7-93 最大连续子序列

给定K个整数的序列{ N1​,N2​,…,NK​ },其任意连续子序列可表示为{ Ni​,Ni+1​,…,Nj​},其中 1≤i≤j≤K。最大连续子序列是所有连续子序列中元素和最大的一个。例如,给定序列{ -2,11,-4,13,-5,-2 },其最大连续子序列为{ 11,-4,13 },最大和为20。 要求编…

JavaScript(五)

JavaScript运算符 JavaScript 提供了多种运算符&#xff0c;用于在代码中执行各种操作。以下是一些主要的 JavaScript 运算符分类及其示例&#xff1a; 1. 算术运算符 加&#xff08;&#xff09;&#xff1a;两个数相加减&#xff08;-&#xff09;&#xff1a;第一个数减去…

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作&#xff08;保姆级教学&#xff09; 以下是git的工作原理&#xff0c;觉得繁琐的可以跳过不看 Workspace&#xff1a;工作区 (平时存放代码的地方) Index / Stage&#xff1a;暂存区&#xff08;用于临时存放存放你的改动&#xff0c;事实上就是一个文件&…