Jenkins 发布 Java 项目:高效持续集成与部署

在现代软件开发中,持续集成和持续部署(CI/CD)已经成为了提高开发效率和软件质量的重要手段。Jenkins 作为一款流行的开源自动化服务器,为 Java 项目的发布提供了强大的支持。本文将详细介绍如何使用 Jenkins 发布 Java 项目,包括安装 Jenkins、配置项目、构建和部署流程等内容。

一、引言

随着软件项目的规模和复杂性不断增加,手动进行项目的构建、测试和部署变得越来越困难和耗时。Jenkins 提供了一种自动化的解决方案,可以帮助开发团队实现持续集成和持续部署,提高开发效率和软件质量。对于 Java 项目而言,Jenkins 可以与各种构建工具和版本控制系统集成,实现自动化的构建、测试和部署流程。

二、Jenkins 基础概念

(一)什么是 Jenkins

Jenkins 是一个开源的自动化服务器,它可以用于自动化各种软件开发任务,如构建、测试、部署等。Jenkins 支持多种编程语言和构建工具,可以与各种版本控制系统集成,如 Git、SVN 等。通过 Jenkins,开发团队可以实现持续集成和持续部署,提高开发效率和软件质量。

(二)Jenkins 的主要功能

  1. 持续集成
    • Jenkins 可以自动检测代码仓库中的变化,并触发构建和测试流程。当开发人员提交代码后,Jenkins 会自动拉取最新的代码,进行构建和测试,确保代码的质量和稳定性。
  2. 持续部署
    • Jenkins 可以将构建好的项目部署到不同的环境中,如开发环境、测试环境、生产环境等。通过配置不同的部署策略,Jenkins 可以实现自动化的部署流程,提高部署效率和可靠性。
  3. 插件扩展
    • Jenkins 拥有丰富的插件生态系统,可以通过安装插件来扩展其功能。例如,可以安装 Maven 插件来支持 Java 项目的构建,安装 Git 插件来与 Git 代码仓库集成等。
  4. 任务调度
    • Jenkins 可以根据设定的时间或事件触发任务执行。例如,可以设置每天定时构建项目,或者在代码仓库有新的提交时自动触发构建任务。

(三)Jenkins 的架构和工作流程

  1. 架构
    • Jenkins 采用主从架构,由一个主节点和多个从节点组成。主节点负责管理任务调度、插件管理和用户界面等,从节点负责执行具体的构建任务。主节点和从节点之间通过网络通信,实现任务的分配和执行。
  2. 工作流程
    • Jenkins 的工作流程通常包括以下几个步骤:
      • 代码提交:开发人员将代码提交到版本控制系统中。
      • 触发构建:Jenkins 检测到代码仓库中的变化,触发构建任务。
      • 构建和测试:Jenkins 从代码仓库中拉取最新的代码,进行构建和测试。构建过程可以使用各种构建工具,如 Maven、Gradle 等。测试过程可以包括单元测试、集成测试、性能测试等。
      • 部署:如果构建和测试成功,Jenkins 可以将构建好的项目部署到不同的环境中。部署过程可以使用各种部署工具,如 Ansible、Docker 等。
      • 通知:Jenkins 可以通过邮件、Slack 等方式通知开发人员构建和部署的结果。

三、安装 Jenkins

(一)安装前的准备

  1. 系统要求
    • Jenkins 可以在多种操作系统上运行,如 Linux、Windows、Mac OS 等。在安装 Jenkins 之前,需要确保系统满足以下要求:
      • Java 运行时环境(JRE)或 Java 开发工具包(JDK):Jenkins 是用 Java 编写的,需要 Java 运行时环境来运行。建议安装 JDK 11 或更高版本。
      • 足够的内存和磁盘空间:Jenkins 需要一定的内存和磁盘空间来运行。具体的要求取决于项目的规模和复杂度。
  2. 选择安装方式
    • Jenkins 可以通过多种方式安装,如使用安装包、Docker 容器等。在选择安装方式时,需要考虑以下因素:
      • 操作系统:不同的安装方式适用于不同的操作系统。例如,在 Linux 系统上,可以使用安装包或 Docker 容器进行安装;在 Windows 系统上,可以使用安装包进行安装。
      • 项目需求:如果项目需要与其他工具集成,如 Docker、Kubernetes 等,可以选择使用 Docker 容器进行安装,以便更好地与这些工具集成。
      • 安装和维护难度:不同的安装方式安装和维护的难度也不同。使用安装包进行安装相对简单,但需要手动进行配置和升级;使用 Docker 容器进行安装需要一定的 Docker 知识,但可以实现自动化的部署和升级。

(二)使用安装包安装 Jenkins

  1. 在 Linux 系统上安装 Jenkins
    • 以下是在 Ubuntu 系统上使用安装包安装 Jenkins 的步骤:
      • 添加 Jenkins 软件源:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

  • 更新软件包列表:
sudo apt update

  • 安装 Jenkins:

sudo apt install jenkins

  • 启动 Jenkins 服务:

sudo systemctl start jenkins

  • 查看 Jenkins 服务状态:
sudo systemctl status jenkins

  1. 在 Windows 系统上安装 Jenkins
    • 以下是在 Windows 系统上使用安装包安装 Jenkins 的步骤:
      • 下载 Jenkins 安装包:从 Jenkins 官方网站下载适用于 Windows 系统的安装包。
      • 运行安装包:双击下载的安装包,按照安装向导的提示进行安装。在安装过程中,可以选择安装路径、服务端口等参数。
      • 启动 Jenkins 服务:安装完成后,Jenkins 服务会自动启动。可以在 Windows 服务管理器中查看 Jenkins 服务的状态。

(三)使用 Docker 容器安装 Jenkins

  1. 安装 Docker
    • 如果还没有安装 Docker,请先安装 Docker。可以参考 Docker 官方文档,根据不同的操作系统进行安装。
  2. 拉取 Jenkins 镜像
    • 在命令行中执行以下命令,拉取 Jenkins 镜像:
docker pull jenkins/jenkins:lts

  1. 运行 Jenkins 容器
    • 执行以下命令,运行 Jenkins 容器:
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkins/jenkins:lts

  • 这个命令将在后台运行一个名为jenkins的 Jenkins 容器,并将容器的 8080 端口和 50000 端口映射到主机的相应端口。可以通过访问主机的 8080 端口来访问 Jenkins 的用户界面。

四、配置 Jenkins

(一)首次访问 Jenkins

  1. 获取初始密码
    • 在安装完成后,首次访问 Jenkins 需要输入初始密码。可以在 Jenkins 的安装目录下找到初始密码文件,或者在容器的日志中查找初始密码。
  2. 解锁 Jenkins
    • 输入初始密码后,Jenkins 会提示解锁系统。按照提示进行操作,解锁 Jenkins。
  3. 安装插件
    • Jenkins 首次启动时,会提示安装一些必要的插件。可以选择安装推荐的插件,也可以根据项目的需求选择自定义安装插件。

(二)配置全局工具

  1. JDK 配置
    • 在 Jenkins 中,需要配置 JDK 以便构建 Java 项目。进入 “全局工具配置” 页面,找到 “JDK” 选项,点击 “新增 JDK” 按钮,填写 JDK 的名称和安装路径。可以选择自动安装 JDK,也可以手动指定 JDK 的安装路径。
  2. Maven 配置
    • 如果项目使用 Maven 进行构建,还需要配置 Maven。进入 “全局工具配置” 页面,找到 “Maven” 选项,点击 “新增 Maven” 按钮,填写 Maven 的名称和安装路径。可以选择自动安装 Maven,也可以手动指定 Maven 的安装路径。
  3. Git 配置
    • 如果项目使用 Git 进行版本控制,需要配置 Git。进入 “全局工具配置” 页面,找到 “Git” 选项,点击 “新增 Git” 按钮,填写 Git 的名称和安装路径。可以选择自动安装 Git,也可以手动指定 Git 的安装路径。

(三)创建项目

  1. 选择项目类型
    • 在 Jenkins 中,可以创建多种类型的项目,如自由风格项目、Maven 项目、Pipeline 项目等。对于 Java 项目,可以选择 Maven 项目或 Pipeline 项目。
    • Maven 项目:适用于使用 Maven 进行构建的项目,可以直接使用 Maven 的命令进行构建和部署。
    • Pipeline 项目:适用于更复杂的构建和部署流程,可以使用 Jenkinsfile 来定义整个构建和部署流程。
  2. 填写项目名称和描述
    • 在创建项目时,需要填写项目的名称和描述。项目名称应该具有唯一性,描述可以简要说明项目的用途和特点。
  3. 配置源代码管理
    • 如果项目使用版本控制系统,需要配置源代码管理。可以选择 Git、SVN 等版本控制系统,并填写代码仓库的 URL、用户名和密码等信息。
  4. 配置构建触发器
    • 可以配置构建触发器,以便在特定的事件发生时自动触发构建任务。例如,可以设置在代码仓库有新的提交时自动触发构建任务,或者设置定时构建任务。
  5. 配置构建步骤
    • 根据项目的需求,配置构建步骤。对于 Maven 项目,可以直接使用 Maven 的命令进行构建,如mvn clean install。对于 Pipeline 项目,可以使用 Jenkinsfile 来定义构建步骤,如使用sh命令执行 Shell 脚本进行构建。
  6. 配置构建后操作
    • 可以配置构建后操作,以便在构建任务完成后执行一些额外的操作。例如,可以将构建好的项目部署到服务器上,或者发送邮件通知开发人员构建结果。

五、构建和部署 Java 项目

(一)使用 Maven 项目进行构建和部署

  1. 配置 Maven 项目
    • 在创建 Maven 项目时,需要填写项目的名称和描述,并配置源代码管理、构建触发器和构建步骤等。在构建步骤中,可以直接使用 Maven 的命令进行构建,如mvn clean install
  2. 构建项目
    • 保存项目配置后,点击 “立即构建” 按钮,Jenkins 会自动拉取代码仓库中的最新代码,并使用 Maven 进行构建。可以在构建日志中查看构建的进度和结果。
  3. 部署项目
    • 如果需要将构建好的项目部署到服务器上,可以在构建后操作中配置部署步骤。例如,可以使用 SSH 插件将构建好的项目复制到服务器上,并执行启动脚本。

(二)使用 Pipeline 项目进行构建和部署

  1. 编写 Jenkinsfile
    • Jenkinsfile 是一个定义 Pipeline 项目构建和部署流程的文本文件。可以使用 Groovy 语言编写 Jenkinsfile,定义构建步骤、测试步骤、部署步骤等。以下是一个简单的 Jenkinsfile 示例:

pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean install'}}stage('Test') {steps {sh 'mvn test'}}stage('Deploy') {steps {sh 'scp -r target/* user@server:/path/to/deploy'sh 'ssh user@server /path/to/deploy/start.sh'}}}
}

  • 在这个示例中,定义了三个阶段:构建、测试和部署。在构建阶段,使用mvn clean install命令进行构建;在测试阶段,使用mvn test命令进行测试;在部署阶段,使用scp命令将构建好的项目复制到服务器上,并使用ssh命令执行启动脚本。

  1. 创建 Pipeline 项目
    • 在 Jenkins 中,创建一个 Pipeline 项目,并填写项目的名称和描述。在 “Pipeline” 选项中,选择 “Pipeline script from SCM”,并选择代码仓库的类型和 URL。在 “Script Path” 中填写 Jenkinsfile 的路径,通常为Jenkinsfile
  2. 构建和部署项目
    • 保存项目配置后,点击 “立即构建” 按钮,Jenkins 会自动拉取代码仓库中的最新代码,并按照 Jenkinsfile 中的定义进行构建和部署。可以在构建日志中查看构建和部署的进度和结果。

六、高级配置和扩展

(一)使用插件扩展 Jenkins 功能

  1. 插件介绍
    • Jenkins 拥有丰富的插件生态系统,可以通过安装插件来扩展其功能。例如,可以安装以下插件来满足不同的需求:
      • Maven Integration Plugin:用于支持 Maven 项目的构建和部署。
      • Git Plugin:用于与 Git 代码仓库集成。
      • SSH Plugin:用于通过 SSH 协议进行远程部署。
      • Email Extension Plugin:用于发送邮件通知构建结果。
      • Slack Notification Plugin:用于通过 Slack 发送通知。
  2. 安装插件
    • 进入 Jenkins 的 “插件管理” 页面,可以选择在线安装插件或上传插件文件进行安装。在线安装插件时,需要连接到互联网,并选择需要安装的插件进行安装。上传插件文件时,需要将插件文件下载到本地,并在 “插件管理” 页面中选择 “高级” 选项,上传插件文件进行安装。

(二)配置多节点构建

  1. 节点介绍
    • Jenkins 可以配置多个节点,以便在不同的环境中进行构建和部署。节点可以是物理服务器、虚拟机或容器等。通过配置多节点构建,可以提高构建和部署的效率,同时也可以实现跨平台的构建和部署。
  2. 配置节点
    • 进入 Jenkins 的 “节点管理” 页面,可以添加新的节点。在添加节点时,需要填写节点的名称、描述、远程工作目录等信息,并选择节点的连接方式。可以选择通过 SSH 连接到远程节点,或者在本地启动一个代理程序连接到 Jenkins 主节点。
  3. 分配任务到节点
    • 在创建项目时,可以选择将任务分配到特定的节点上进行构建和部署。可以根据项目的需求和节点的性能,选择合适的节点进行构建和部署。

(三)集成其他工具和平台

  1. 与持续集成工具集成
    • Jenkins 可以与其他持续集成工具集成,如 SonarQube、Jacoco 等。通过集成这些工具,可以实现代码质量检测、测试覆盖率分析等功能,提高软件质量。
  2. 与容器平台集成
    • Jenkins 可以与容器平台集成,如 Docker、Kubernetes 等。通过集成这些平台,可以实现容器化的构建和部署,提高部署效率和可靠性。
  3. 与云平台集成
    • Jenkins 可以与云平台集成,如 AWS、Azure、Google Cloud 等。通过集成这些平台,可以实现自动化的云资源管理和部署,提高部署的灵活性和可扩展性。

七、故障排除和优化

(一)常见问题和解决方法

  1. 构建失败
    • 如果构建任务失败,可以在构建日志中查看失败的原因。常见的构建失败原因包括代码错误、依赖库缺失、构建工具配置错误等。可以根据构建日志中的错误信息,进行相应的修复和调整。
  2. 部署失败
    • 如果部署任务失败,可以在构建日志中查看失败的原因。常见的部署失败原因包括服务器连接问题、权限不足、启动脚本错误等。可以根据构建日志中的错误信息,进行相应的修复和调整。
  3. 插件安装失败
    • 如果插件安装失败,可以在 Jenkins 的日志中查看失败的原因。常见的插件安装失败原因包括网络连接问题、插件依赖冲突等。可以尝试重新安装插件,或者解决插件依赖冲突问题。

(二)性能优化

  1. 优化构建时间
    • 可以通过以下方法优化构建时间:
      • 使用并行构建:如果项目的构建过程可以并行执行,可以使用 Maven 的并行构建功能或 Jenkins 的分布式构建功能,提高构建速度。
      • 优化构建步骤:检查构建步骤中是否存在不必要的操作,如重复的构建、不必要的测试等,进行优化和调整。
      • 使用缓存:如果项目的构建过程中存在一些耗时的操作,如下载依赖库、编译代码等,可以使用缓存技术,如 Maven 的本地仓库缓存、Jenkins 的缓存插件等,提高构建速度。
  2. 优化部署时间
    • 可以通过以下方法优化部署时间:
      • 使用自动化部署工具:如果项目的部署过程比较复杂,可以使用自动化部署工具,如 Ansible、SaltStack 等,提高部署效率。
      • 优化部署步骤:检查部署步骤中是否存在不必要的操作,如重复的部署、不必要的配置等,进行优化和调整。
      • 使用容器化部署:如果项目适合容器化部署,可以使用 Docker、Kubernetes 等容器平台,实现快速部署和扩展。

八、结论

使用 Jenkins 发布 Java 项目是一种高效、可靠的持续集成和持续部署方法。通过安装 Jenkins、配置项目、构建和部署流程,可以实现自动化的软件开发流程,提高开发效率和软件质量。在实际应用中,可以根据项目的需求和特点,进行高级配置和扩展,如使用插件扩展功能、配置多节点构建、集成其他工具和平台等。同时,也需要注意故障排除和性能优化,确保 Jenkins 的稳定运行和高效工作。希望本文对读者在使用 Jenkins 发布 Java 项目方面提供了有益的参考和指导。

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

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

相关文章

★ Linux ★ 基础开发工具的使用(上)

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习 linux 基础开发工具的使用~ 目录 壹 Linux编辑器 - vim使用 1.1 vim的基本概念 1.2 vim正常模式命令集 1.2.1 插入模式 1.2.2 移动光标命令 1.2.3 编辑命令 1.3 vim末行模式命令集 贰 Lin…

solidworks学习6吊环-20241030

solidworks学习6吊环 图 1 使用到的命名&#xff1a;拉伸曲面&#xff0c;旋转曲面&#xff0c;镜像实体&#xff0c;剪裁曲面&#xff0c; 前视基准面绘制 图 2 绘制旋转轴 图 3 旋转曲面 图 4 上视基准面绘制&#xff0c;标准圆边尺寸的时候需要按住shift键标注&#x…

提示词高级阶段学习day4.1

第一步&#xff1a;你要有一个大模型帐号&#xff0c;至少已经熟悉和它们对话的方式。最强性能当属ChatGPT4&#xff0c;当然也推荐国产平替&#xff1a; Kimi.ai - 帮你看更大的世界 智谱清言 第二步&#xff1a;看 OpenAI 的官方文档&#xff1a; 目录&#xff1a;OpenAI …

开源趣味艺术画板Paint Board

什么是 Paint Board &#xff1f; Paint Board 是简洁易用的 Web 端创意画板。它集成了多种创意画笔和绘画功能&#xff0c;支持形状绘制、橡皮擦、自定义画板等操作&#xff0c;并可以将作品保存为图片。 软件功能&#xff1a; 不过非常可惜&#xff0c;老苏最期待的数据同步还…

建设NFS服务器并实现文件共享

关闭防火墙和s0 systemctl stop firewalld setenforce 0 安装NFS yum install nfs-utils -y 新建共享目录并设置权限 echo "hello" > /nfs/shared/test1 chmod -Rf 777 /nfs/shared/ 配置服务端的NFS配置文件 vim /etc/exports /nfs/shared *(ro) 启动…

软件测试学习笔记丨SeleniumPO模式

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…

python通过keyboard库实现模拟/监听键盘

keyboard介绍 如果我们想要通过快捷键&#xff0c;来调用某段代码&#xff0c;我们可以使用python的keyboard库&#xff0c;这个库可以用于发送&#xff0c;挂钩&#xff0c;以及模拟键盘事件等&#xff0c;并且同时支持多种操作系统&#xff08;但是需要注意的是&#xff0c;…

Spring Boot 创建项目详细介绍

上篇文章简单介绍了 Spring Boot&#xff08;Spring Boot 详细简介&#xff01;&#xff09;&#xff0c;还没看到的读者&#xff0c;建议看看。 下面&#xff0c;介绍一下如何创建一个 Spring Boot 项目&#xff0c;以及自动生成的目录文件作用。 Maven 构建项目 访问 http…

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败&#xff0c;记录一下遇到的坑&#xff0c;也给大家节省点时间。 方法1&#xff1a; 错误呢就是下面这个&#xff0c;说没c编译器&#xff0c;要不就去他给的地址上安装一下&#xff0c;我安装了一下好像没什么用&#xff0c;也没太敢勾选&am…

未来之维,陈欣的智能CAD

第一章 新世界的曙光 在不远的未来&#xff0c;人类科技取得了前所未有的进步。人工智能不仅渗透到了生活的每一个角落&#xff0c;而且开始在科学研究、艺术创作乃至人类情感交流中扮演重要角色。在这个充满无限可能的时代&#xff0c;有一位年轻的女工程师——陈欣&#xff…

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译&#xff0c;这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…

2024 Rust现代实用教程:1.2编译器与包管理工具以及开发环境搭建

文章目录 一、Rust的编译器rustc二、开发环境搭建三、Rust的包管理工具Cargo四、项目结构1.Cargo.toml文件2.创建一个可执行文件项目3.创建一个库项目 参考 一、Rust的编译器rustc 查看版本 rustc-version编译生成二进制文件 rustc -o output filename filename.rs编译生成库…

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载 2024 年 10 月 28 日&#xff0c;Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作&#xff0c;为通知、邮件和消息生成摘要&#xff0c;体验交互更自然、功能更丰富的 Siri&#xff0c;使…

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多&#xff0c;学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作&#xff0c;实际开发中&#xff0c;是通过各类更上层的组件去实现。而这些组件在读写kafka数据时&#xff0c;用的当然是kafka的jav…

Backtrader 数据篇 02

Backtrader 数据篇 本系列是使用Backtrader在量化领域的学习与实践&#xff0c;着重介绍Backtrader的使用。Backtrader 中几个核心组件&#xff1a; Cerebro&#xff1a;BackTrader的基石&#xff0c;所有的操作都是基于Cerebro的。Feed&#xff1a;将运行策略所需的基础数据…

Leetcode224 -- 基本计算器及其拓展

题目分析&#xff1a; 其实这个计算器的实现并不难&#xff0c;因为除了括号就剩下加减法嘛&#xff0c;括号肯定比加减法先执行&#xff0c;但是加减法是同级的&#xff0c;只是会改变数字的正负号而已&#xff0c;所以实现的逻辑并不是很难&#xff0c;我们只需要一个栈&…

【jvm】为什么Xms和Xmx的值通常设置为相同的?

目录 1. 说明2. 避免性能开销3. 提升稳定性4. 简化配置5. 优化垃圾收集6. 获取参数6.1 代码示例6.2 结果示例 1. 说明 1.-Xms 和 -Xmx 参数分别用于设置堆内存的初始大小&#xff08;最小值&#xff09;和最大大小。2.在开发环境中&#xff0c;开发人员可能希望快速启动应用程…

瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了

本文介绍瑞芯微RK3566/RK3568在Android11系统下&#xff0c;默认屏蔽导航栏/状态栏方法&#xff0c;使用触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;Laval官方社区主荐&#xff0c;已适配全新OpenHarmony5.0 R…

使用AIM对SAP PO核心指标的自动化巡检监控

一、背景 由于SAP PO系统维护成本较高&#xff0c;各类型异常报错等都需要人员进行时刻监控和响应&#xff0c;遂由AIM平台进行自动化巡检SAP PO的各指标&#xff0c;然后告警通知用户&#xff0c;节省维护成本和提高工作效率 二、核心指标监控 SAP PO失败消息 适用于S…

openpnp - 手工修改配置文件(元件高度,size,吸嘴)

文章目录 openpnp - 手工修改配置文件(元件高度,size,吸嘴)概述笔记parts.xmlpackages.xml 手工将已经存在的NT1,NT2拷贝出来改名备注END openpnp - 手工修改配置文件(元件高度,size,吸嘴) 概述 载入新板子贴片准备时&#xff0c;除了引入Named CSV文件&#xff0c;还要在ope…