从零搭建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.mfbz.cn/a/597394.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring与AI结合-spring boot3整合AI组件

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 spring ai简介 单独整合al接口 整合Spring AI组件 起步条件 ​编辑 进行必要配置 写在最后 写在前面 本文介绍了springboot开发后端服务中&#xff0c;AI组件(Spring A…

笔试强训Day15 二分 图论

平方数 题目链接&#xff1a;平方数 (nowcoder.com) 思路&#xff1a;水题直接过。 AC code&#xff1a; #include<iostream> #include<cmath> using namespace std; int main() {long long int n; cin >> n;long long int a sqrtl(n);long long int b …

【1】STM32·FreeRTOS·新建工程模板【一步到位】

目录 一、获取FreeRTOS源码 二、FreeRTOS源码简介 2.1、FreeRTOS源码文件内容 2.2、FreeRTOS内核 2.3、Source文件夹 2.4、portable文件夹 三、FreeRTOS手把手移植 3.1、FreeRTOS移植准备 3.2、FreeRTOS移植步骤 3.2.1、将 FreeRTOS 源码添加至基础工程、头文件路径等…

LLaMA 羊驼系大语言模型的前世今生

关于 LLaMA LLaMA是由Meta AI发布的大语言系列模型&#xff0c;完整的名字是Large Language Model Meta AI&#xff0c;直译&#xff1a;大语言模型元AI。Llama这个单词本身是指美洲大羊驼&#xff0c;所以社区也将这个系列的模型昵称为羊驼系模型。 Llama、Llama2 和 Llama3…

修改idea缓存的默认存储位置

打开idea.properties 找到 # idea.config.path${user.home}/.IntelliJIdea/config # idea.system.path${user.home}/.IntelliJIdea/system 将${user.home}替换成你要存储到的路径 再次打开idea时会弹出消息&#xff0c;点击ok即可。

电脑c盘太满了,如何清理 电脑杀毒软件哪个好用又干净免费 电脑预防病毒的软件 cleanmymacX有必要买吗 杀毒软件排行榜第一名

杀毒软件通常集成监控识别、病毒扫描和清除、自动升级、主动防御等功能&#xff0c;有的杀毒软件还带有数据恢复、防范黑客入侵、网络流量控制等功能&#xff0c;是计算机防御系统的重要组成部分。 那么&#xff0c;对于Mac电脑用户来说&#xff0c;哪款电脑杀毒软件更好呢&a…

虚幻引擎5 Gameplay框架(二)

Gameplay重要类及重要功能使用方法&#xff08;一&#xff09; 配置LOG类及PlayerController的网络机制 探索验证GamePlay重要函数、类的执行顺序与含义 我们定义自己的日志&#xff0c;专门建立一个存放自己日志的类&#xff0c;这个类继承自BlueprintFunctionLibrary 然后…

Prometheus 2: 一个专门评估其他语言模型的开源语言模型(续集)

普罗米修斯的续集来了。 专有的语言模型如 GPT-4 经常被用来评估来自各种语言模型的回应品质。然而,透明度、可控制性和可负担性等考虑强烈促使开发专门用于评估的开源语言模型。另一方面,现有的开源评估语言模型表现出关键的缺点:1) 它们给出的分数与人类给出的分数存在显著差…

[Android]四大组件简介

在 Android 开发中&#xff0c;“四大组件”&#xff08;Four Major Components&#xff09;是指构成 Android 应用程序的四种核心组件&#xff0c;它们通过各自的方式与系统交互&#xff0c;实现应用的多样功能。这些组件是&#xff1a;Activity、Service、Broadcast Receiver…

用 node 写一个命令行工具,全局安装可用

现在&#xff0c;不管是前端项目还是 node 项目&#xff0c;一般都会用 npm 做包管理工具&#xff0c;而 package.json 是其相关的配置信息。 对 node 项目而言&#xff0c;模块导出入口文件由 package.json 的 main 字段指定&#xff0c;而如果是要安装到命令行的工具&#x…

28 - 算术运算指令

---- 整理自B站UP主 踌躇月光 的视频 文章目录 1. ALU改进2. CPU 整体电路3. 程序4. 实验结果 1. ALU改进 此前的 ALU&#xff1a; 改进后的 ALU&#xff1a; 2. CPU 整体电路 3. 程序 # pin.pyMSR 1 MAR 2 MDR 3 RAM 4 IR 5 DST 6 SRC 7 A 8 B 9 C 10 D 11 DI 1…

在.NET架构的Winform项目中引入“异步编程”思想和技术

在.NET架构的Winform项目中引入“异步编程”思想和技术 一、异步编程引入&#xff08;1&#xff09;异步编程引入背景&#xff08;2&#xff09;异步编程程序控制流图&#xff08;3&#xff09;异步编程前置知识&#xff1a; 二、异步编程demo步骤1&#xff1a;步骤2&#xff1…

政安晨:【Keras机器学习示例演绎】(三十八)—— 从零开始的文本分类

目录 简介 设置 加载数据IMDB 电影评论情感分类 准备数据 数据矢量化的两种选择 建立模型 训练模型 在测试集上评估模型 制作端到端模型 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨…

在Linux上使用Selenium驱动Chrome浏览器无头模式

大家好&#xff0c;我们平时在做UI自动化测试的时候&#xff0c;经常会用到Chrome浏览器的无头模式&#xff08;无界面模式&#xff09;&#xff0c;并且将测试代码部署到Linux系统中执行&#xff0c;或者平时我们写个爬虫爬取网站的数据也会使用到&#xff0c;接下来和大家分享…

软考中级-软件设计师(九)数据库技术基础 考点最精简

一、基本概念 1.1数据库与数据库系统 数据&#xff1a;是数据库中存储的基本对象&#xff0c;是描述事物的符号记录 数据库&#xff08;DataBase&#xff0c;DB&#xff09;&#xff1a;是长期存储在计算机内、有组织、可共享的大量数据集合 数据库系统&#xff08;DataBas…

python基础---面向对象相关知识

面向对象 可以把数据以及功能打包为一个整体 类: 名称属性(数据)方法 class Person:def __init__(self, name, age):self.age ageself.name namedef print_info:print(self.name, self.age)定义 #经典类 class Dog1:pass# 新式类 class Dog2(object):pass在python3里面这…

LeetCode-741. 摘樱桃【数组 动态规划 矩阵】

LeetCode-741. 摘樱桃【数组 动态规划 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;动态规划&#xff0c;定推初遍举。解题思路二&#xff1a;倒序循环解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个 n x n 的网格 grid &#xff0c;代表一块樱桃地&#xff0…

VMware虚拟机中Linux系统奔溃,怎么办?

一大早启动虚拟机准备开始工作&#xff0c;却遭遇到Linux系统崩溃&#xff0c;屏幕上显示以下错误提示&#xff1a; 这段文本看起来是来自系统引导时的日志信息&#xff0c;提到了一些关于文件系统的问题和建议。根据这段信息&#xff0c;似乎 /dev/sda1 分区中的文件系统存在一…

红日靶场ATTCK 1通关攻略

环境 拓扑图 VM1 web服务器 win7&#xff08;192.168.22.129&#xff0c;10.10.10.140&#xff09; VM2 win2003&#xff08;10.10.10.135&#xff09; VM3 DC win2008&#xff08;10.10.10.138&#xff09; 环境搭建 win7&#xff1a; 设置内网两张网卡&#xff0c;开启…

SeetaFace6人脸检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…
最新文章