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

【Maven】Nexus私服

6. Maven的私服

6.1 什么是私服

Maven 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。一些无法从外部仓库下载到的构件,如项目组其他人员开发的 jar 包,也能从本地上传到私服供其他人使用。

建立了 Maven 私服后,当局域网内的用户需要某个构件时,会先请求本地仓库,若本地仓库不存在所需构件,则请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,再去请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。

6.2 Maven仓库管理器Nexus

6.2.1 什么是Nexus

Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为"Maven 仓库管理器"。 Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版,其中开源版足以满足大部分 Maven 用户的需求。

6.2.2 Nexus仓库的类型

Nexus 默认内置了很多仓库,这些仓库可以划分为 3 种类型,每种类型的仓库用于存放特定的 jar 包,具体说明如下:

  • hosted:宿主仓库。部署自己的 jar 包到这个类型的仓库中,包括 Releases 和 Snapshots 两部分,Releases 为公司内部发行版本仓库,Snapshots 为公司内部测试版本仓库。
  • proxy:代理仓库,maven-central。用于代理远程的公共仓库,如 Maven 中央仓库。用户连接私服,私服自动去中央仓库下载 jar 包或者插件。
  • group:仓库组,maven-public。用来合并多个 hosted/proxy 仓库,通常用于配置自己的 Maven 连接仓库组。当我们下载 jar 包时,从仓库组中的每个仓库找一遍,找到后下载。请添加图片描述

6.2.3 Nexus实战

6.2.3.1 运行Nexus控制台

1、以管理员身份打开 cmd,进入到 nexus 安装目录的 bin 目录下,执行命令nexus /run nexus,启动 Nexus 控制台。

启动成功:
请添加图片描述
2、访问 Nexus 工作台:http://localhost:8081/
请添加图片描述
3、登录 Nexus 工作台

输入账号(默认为 admin),密码在提示的文件中(xxxxxxxxxxxx)。在登录过程中,需要设置"使用账号和密码登录",即选择下面的选项,以提高安全性。
请添加图片描述

6.2.3.2 在私服上创建仓库

1、控制台创建仓库

在 Nexus 私服上创建 2 个仓库,myphoenix-snapshot 和 myphoenix-release,分别作为内侧仓库和发布仓库
请添加图片描述
选择 maven2(hosted):
请添加图片描述
取名为 myphoenix-release,类型为 Release,创建:
请添加图片描述
2、将新建仓库添加到仓库组

创建好 myphoenix-release 仓库后,我们可以将自己打包的 jar 包上传到 Nexus 私服。但是,我们还想让其他开发人员能够在私服上下载我们上传的 jar。这时,需要将此仓库添加到仓库组 maven-public 仓库中。
请添加图片描述
以同样的方式在 Nexus 私服上创建个人 snapshot 测试库 myphoenix-snapshot。然后,将 myphoenix-snapshot 添加到仓库组 maven-public 中去。

此时,就将个人的测试仓库和发行仓库添加到 maven-public 中了。
请添加图片描述
在后面的开发工作中,我们可以上传 jar 包到 Nexus 私服,其他开发人员可以从私服下载我们上传的 jar 包了。

3、修改私服配置的远程仓库为阿里镜像仓库

将 maven-central 中的中央仓库地址修改为阿里云远程仓库的地址。

可以看到,maven-central 默认代理的是 Maven 的中央仓库:
请添加图片描述
为了加快访问速度,我们将其修改为阿里的远程仓库:

4、修改本地机器的 Maven 配置

修改 Maven 工具访问私服。

在之前的配置中,Maven 工具直接配置了阿里的远程仓库,现在,我们将其配置为私服的地址,让 Maven 通过私服下载 jar 包。修改 settings.xml 文件:

  • 修改本地仓库,创建一个新的本地仓库,方便观察到从私服下载 jar 包。
  • 修改远程仓库地址为 Nexus 私服的地址。

设置访问 Nexus 私服的用户名和密码

  </servers><server><id>myphoenix-nexus</id><username>admin</username><password>xxxxxxxxxxxx</password></server></servers>

删除原来配置的阿里远程仓库,重新配置 Nexus 私服地址,用于下载 jar 包

  </mirrors><mirror>  <id>myphoenix-nexus</id><mirrorOf>central</mirrorOf><name>mynexus</name>  <url>http://localhost:8081/repository/maven-public/</url>          </mirror></mirrors>

打开项目,发现 Maven 报错,jar 包也没了:
请添加图片描述
刷新 Maven 依赖,发现 Nexus 控制台的 maven-public 中有了 jar 包:
请添加图片描述

6.2.3.3 部署jar包至私服&从私服下载jar包

上传本地 jar 包到 Nexus 私服:

1、创建 maven_nexus 模块。

2、在 maven_nexus 模块中创建一个类 Common,在 Common 类中定义一个 sayHi 方法,模拟开发的功能。

3、在 maven_nexus 的 pom.xml 文件中配置部署参数。

4、在 maven_nexus 的生命周期中,执行 deploy,分别将 Snapshot 和 Release 版本部署到私服上。

  • version 为 1.0-SNAPSHOT,上传至内侧仓库。
  • version 为 1.0.0,上传至发布仓库。

5、创建 maven_nexus_download 模块,模拟同组的其他开发人员,在该模块中编写测试类,尝试引入 maven_nexus 模块依赖。

pom.xml 配置如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.myphoenix</groupId><artifactId>maven_nexus</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--为项目进行部署(上传至私服)参数配置,以什么用户名和密码,上传到哪个库--><distributionManagement><!--上传至发布仓库--><repository><id>myphoenix-nexus</id><url>http://localhost:8081/repository/myphoenix-release/</url></repository><!--上传至内测仓库--><snapshotRepository><id>myphoenix-nexus</id><url>http://localhost:8081/repository/myphoenix-snapshot/</url></snapshotRepository></distributionManagement></project>

现将内侧版本上传至内侧仓库:
请添加图片描述
查看控制台信息:

C:\Softwares\Developer_Kits\JDK\jdk1.8.0_131\bin\ ......
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< cn.myphoenix:maven_nexus >----------------------
[INFO] Building maven_nexus 1.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_nexus ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven_nexus ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven_nexus ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ maven_nexus ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven_nexus ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven_nexus ---
[INFO] Building jar: C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\maven_nexus-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ maven_nexus ---
[INFO] Installing C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\maven_nexus-1.0-SNAPSHOT.jar to C:\Softwares\Developer_Kits\apache-maven-3.8.8\repository\cn\myphoenix\maven_nexus\1.0-SNAPSHOT\maven_nexus-1.0-SNAPSHOT.jar
[INFO] Installing C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\pom.xml to C:\Softwares\Developer_Kits\apache-maven-3.8.8\repository\cn\myphoenix\maven_nexus\1.0-SNAPSHOT\maven_nexus-1.0-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ maven_nexus ---
Downloading from myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.jar
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.jar (2.5 kB at 16 kB/s)
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.pom
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.pom (1.2 kB at 8.2 kB/s)
Downloading from myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml (767 B at 7.8 kB/s)
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml (281 B at 3.8 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.498 s
[INFO] Finished at: 2024-11-28T15:10:38+08:00
[INFO] ------------------------------------------------------------------------Process finished with exit code 0

查看私服上的内侧仓库 myphoenix-snapshot,发现部署成功:
请添加图片描述
将 pom.xml 文件中的 version 修改为 1.0.0,以相同的方式将其部署到私服的发布仓库 myphoenix-release 中。
请添加图片描述
在 maven_nexus_download 模块中,编写测试类,尝试引入发布版本的 maven_nexus-1.0.0.jar。
请添加图片描述
测试类:

public class CommonTest {public void testSayHi() {Common common = new Common();common.sayHi();}
}

测试通过:
请添加图片描述

相关文章:

【Maven】Nexus私服

6. Maven的私服 6.1 什么是私服 Maven 私服是一种特殊的远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。一些无法从外部仓库下载到的构件&#xff0c;如项目组其他人员开发的…...

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下AI高中数学教学视频生成技术&#xff1a;利用通义千问、MathGPT、视频多模态大模型&#xff0c;语音大模型&#xff0c;将4个模型融合 &#xff0c;生成高中数学教学视频&#xff0c;并给出实施方案。本文利用专家模…...

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展&#xff0c;数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面&#xff0c;传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表&#xff0c;该图表通过动态数据可视化展示了温度值&#xff0c;并通过渐变色…...

windows电脑上安装树莓派操作系统

在Windows电脑上安装树莓派通常涉及以下几个步骤:准备安装工具、下载树莓派系统镜像、烧录系统到SD卡、配置树莓派以及远程连接(如果需要无显示器操作)。以下是详细的步骤说明: 一、准备安装工具 安装树莓派官方烧录工具: 下载并安装Raspberry Pi Imager。这是一个官方的…...

交换机四大镜像(端口镜像、流镜像、VLAN镜像、MAC镜像)应用场景、配置实例及区别对比

在网络管理中&#xff0c;端口镜像、流镜像、VLAN镜像和MAC镜像都是用于监控和分析网络流量的重要技术。 端口镜像&#xff08;Port Mirroring&#xff09; 定义&#xff1a;端口镜像是将一个或多个源端口的流量复制到一个目标端口&#xff0c;以便于网络管理员能够监控和分析…...

我不是挂王-用python实现燕双鹰小游戏

一.准备工作 1.前言提要 作为程序员在浩瀚的数字宇宙中&#xff0c;常常感觉现实世界是一台精密运作的虚拟机&#xff0c;其底层的物理逻辑如同铁律般难以撼动。然而我们拥有在虚拟世界中自由驰骋、创造无限可能的独特力量。突发奇我想用Python写出燕双鹰的小游戏,这样想想就很…...

Java:反射、注解

文章目录 1. 反射1-1. 获取Class对象的三种方式1-2. 获取类的构造器、实例化对象1-3. 获取类的成员变量1-4. 获取类的成员方法 2. 注解2-1. 元注解2-2. 解析注解 1. 反射 反射&#xff1a;加载类&#xff0c;并允许以编程的方式解剖类中的各种成员变量、方法、构造器。 1-1. …...

Java 通过枚举类减少if else

目录 一. 案例1二. 案例2三. 案例3四. 案例4 枚举类聚合封装消息 一. 案例1 涉及到EnumMap的实际使用 ⏹定义一个枚举类&#xff0c;用来表示日本的各种支付方法对应的code import com.fasterxml.jackson.annotation.JsonFormat;// 让jackson将前台的数据封装数据到枚举类中 J…...

单链表---移除链表元素

对于无头单向不循环链表&#xff0c;给出头结点head与数值val&#xff0c;删除链表中数据值val的所有结点 #define ListNodeDataType val struct ListNode { struct ListNode* psll;ListNodeDataType val; } 方法一---遍历删除 移除所有数值为val的链表结点&#xff0c;…...

认识redis 及 Ubuntu安装redis

文章目录 一. redis概念二. redis应用场景二. redis的特性四. 使用Ubuntu安装redis 一. redis概念 redis 是在内存中存储数据的中间件, 用在分布式系统 redis是客户端服务器结构的程序, 客户端服务器之间通过网络来通信 二. redis应用场景 redis可用作数据库 类似MySQL, 但…...

Java开发网络安全常见问题

1、敏感信息明文传输 用户敏感信息如手机号、银行卡号、验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输。 如下图中小红书APP 的手机短信验证码登录接口&#xff0c;此处没有对用户手机号和验证码等信息进行加密传输&#xff0c;可以很简单的截取并开展一些合法的…...

C#基础之委托,事件

文章目录 1 委托1.1 简介1.2 操作使用1.2.1 声明委托&#xff08;Delegate&#xff09;1.2.2 实例化委托&#xff08;Delegate&#xff09;1.2.3 直接调用和invoke1.2.4 Invoke 和 BeginInvoke 1.3 委托的多播1.4 委托的匿名和lambda1.4.1 匿名方法1.4.2 lambda 表达式 1.5 内置…...

nginx配置静态资源的访问

比如静态资源图片位于/mnt/software/nginx/html/static/images目录下&#xff0c;那么nginx.conf中的配置则为&#xff1a; # 静态文件目录 location /static/images/ { root /mnt/software/nginx/html; try_files $uri $uri/ 404; #找不到时提示404 …...

JS的魔法三角:constructor、prototype与__proto__

在JavaScript中&#xff0c;constructor、prototype和__proto__是与对象创建和继承机制紧密相关的三个概念。理解它们之间的关系对于掌握JavaScript的面向对象编程至关重要。下面将详细介绍这个魔法三角&#xff1a; 1. constructor 定义&#xff1a;constructor是一个函数&am…...

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…...

matlab显示sin二维图

1&#xff0c;新建脚本 2、保存脚本 3、脚本命令&#xff1a;clc 清除 脚本命令的信息 clrear all 清除全部 4工作区内容&#xff1a;变量啥的 x0:0.001:2*pi%% 开始 精度 中值 ysin(x) y1cos(x) figure%%产生一个屏幕 plot(x,y)%%打印坐标 title(ysin(x))%%标题 xlabel(…...

验证 kubelet 服务已经停止并且不再生成错误日志

要验证 kubelet 服务已经停止并且不再生成错误日志&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 检查 kubelet 服务状态 首先&#xff0c;确认 kubelet 服务已经停止。 Bash 深色版本 sudo systemctl status kubelet 你应该看到类似以下的输出&#xff0c;表示服…...

【Linux】进程控制-----进程替换

目录 一、为什么要进行进程替换&#xff1a; 二、进程替换的原理&#xff1a; 三、exec家族&#xff1a; 1、execl&#xff1a; 2、execlp&#xff1a; 3、execv&#xff1a; 4、execvp&#xff1a; 5、execle和execve ​编辑 putenv&#xff1a; 一、为什么要进行进程…...

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本。 原因是&#xff1a;当前操作系统版本为Windows Server 2016 Standard版本&#xff0c;其自带的Microsoft .NET Framework 版本为4.6太低&#xff0c;不满足要求。 根据报错的提示&#xff0c;点击链接…...

使用ECharts创建带百分比标注的环形图

在数据可视化领域&#xff0c;环形图是一种非常有效的图表类型&#xff0c;它能够清晰地展示各部分与整体的关系。今天&#xff0c;我们将通过ECharts来创建一个带百分比标注的环形图&#xff0c;并详细解释如何实现这一效果。 1. 数据准备 首先&#xff0c;我们定义了一些基础…...

Windows风扇控制终极指南:用免费开源软件告别风扇噪音烦恼

Windows风扇控制终极指南&#xff1a;用免费开源软件告别风扇噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

RISC-V DSP开发板实战:从环境搭建到BLDC电机控制全解析

1. 项目概述&#xff1a;一次难得的RISC-V DSP开发板深度体验机会 作为一名在嵌入式领域摸爬滚打了十多年的老工程师&#xff0c;我见证了ARM架构从崭露头角到一统江湖的全过程。然而&#xff0c;近几年开源指令集架构RISC-V的异军突起&#xff0c;让我这个“老顽固”也感受到了…...

如何高效拆分CATIA多实体零件:pycatia自动化解决方案的完整指南

如何高效拆分CATIA多实体零件&#xff1a;pycatia自动化解决方案的完整指南 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在CATIA三维设计领域&#xff0c;工程师们经常面临一个常见挑战&…...

使用 Taotoken CLI 工具一键配置多开发环境与团队密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置多开发环境与团队密钥 基础教程类&#xff0c;面向需要为团队或跨项目统一配置大模型接入环境的开…...

ESP32接入ChatGPT API:打造智能语音交互硬件原型

1. 项目概述&#xff1a;当ESP32遇见ChatGPT最近在捣鼓ESP32&#xff0c;想给它加点“脑子”。ESP32本身是个很棒的物联网微控制器&#xff0c;Wi-Fi、蓝牙、低功耗&#xff0c;该有的都有&#xff0c;但它本质上还是个执行预设逻辑的设备。我就琢磨&#xff0c;能不能让它接入…...

如何快速入门ROS机器人仿真:WPR系列仿真工具完整指南

如何快速入门ROS机器人仿真&#xff1a;WPR系列仿真工具完整指南 【免费下载链接】wpr_simulation 项目地址: https://gitcode.com/gh_mirrors/wp/wpr_simulation 想要在虚拟环境中快速学习ROS机器人开发吗&#xff1f;wpr_simulation项目为你提供了一个完美的起点&…...

别再让Excel卡死了!手把手教你安装Oracle Crystal Ball并管理加载项(附32/64位安装包)

高效管理Oracle Crystal Ball加载项&#xff1a;告别Excel卡顿的终极指南 你是否经历过这样的场景&#xff1a;刚安装完Oracle Crystal Ball准备大展身手&#xff0c;却发现Excel启动速度慢得像蜗牛爬行&#xff1f;作为一款强大的蒙特卡洛模拟工具&#xff0c;Crystal Ball确…...

Motrix WebExtension终极指南:如何让你的浏览器下载速度提升300%

Motrix WebExtension终极指南&#xff1a;如何让你的浏览器下载速度提升300% 【免费下载链接】motrix-webextension A browser extension for the Motrix Download Manager and its forks 项目地址: https://gitcode.com/gh_mirrors/mo/motrix-webextension 你是否厌倦了…...

GraphAgent:大语言模型与图数据融合的智能体框架解析与实践

1. 项目概述&#xff1a;当大语言模型遇上图数据最近在折腾一些涉及复杂关系数据的项目&#xff0c;比如学术文献网络、社交关系分析&#xff0c;甚至是企业内部的知识库梳理。这些场景里&#xff0c;数据不只是孤立的文本或数字&#xff0c;它们之间充满了各种显式的连接&…...

Excel数据分析工具库 vs. Python手动计算:手把手教你搞定一元线性回归的全部检验

Excel与Python双视角解析&#xff1a;一元线性回归的实战检验指南 当市场部的同事递给你一份用户行为数据&#xff0c;指着"页面停留时间"和"转化率"两列问你"这两个指标到底有没有关系"时&#xff0c;你会选择打开Excel的回归分析工具一键生成报…...