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

Maven最新版本安装及配置

Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。 

本章我们详细介绍如何使用Maven。 


一、Maven是什么?

如果每一个项目都自己搞一套配置,肯定会一团糟。我们需要的是一个标准化的Java项目管理和构建工具。

Maven就是是专门为Java项目打造的管理和构建工具,它的主要功能有:

  • 提供了一套标准化的项目结构;
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……);
  • 提供了一套依赖管理机制。

Maven项目结构

一个使用Maven管理的普通的Java项目,它的目录结构默认如下:

a-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       ├── java
│       └── resources
└── target

项目的根目录a-maven-project是项目名,它有一个项目描述文件pom.xml,存放Java源码的目录是src/main/java,存放资源文件的目录是src/main/resources,存放测试源码的目录是src/test/java,存放测试资源的目录是src/test/resources,最后,所有编译、打包生成的文件都放在target目录里。

这些就是一个Maven项目的标准目录结构。

所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。

我们再来看最关键的一个项目描述文件pom.xml,它的内容长得像下面:

<project ...><modelVersion>4.0.0</modelVersion><groupId>com.itranswarp.learnjava</groupId><artifactId>hello</artifactId><version>1.0</version><packaging>jar</packaging><properties>...</properties><dependencies><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies>
</project>

其中,groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupIdartifactIdversion作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖commons-logging

<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version>
</dependency>

使用<dependency>声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。

二、Maven和JDK版本支持情况

JDK版本Maven版本支持情况
JDK 1.8Maven 3.3及以上
JDK 9Maven 3.5.0及以上
JDK 10Maven 3.5.3及以上
JDK 11Maven 3.5.4及以上
JDK 12Maven 3.6.0及以上
JDK 13Maven 3.6.1及以上
JDK 14Maven 3.6.2及以上
JDK 15Maven 3.6.3及以上
JDK 16Maven 3.8.1及以上
JDK 17Maven 3.8.3及以上

之前我们使用的maven版本是3.6.3。详细可以参考下面文章进行了解学习:

修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客

!!! 为了后续学习JDK17方便,这次我们安装较新版本的Maven作为学习~

三、安装Maven

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

如果你还未安装 JDK,可以参考我们的Java基础-环境篇:JDK安装与环境变量配置jdk8/11/17(保姆式详解)_Siobhan. 明鑫的博客-CSDN博客

若JDK配置完毕,接着按照如下步骤进行~~~

1、检查 Java 安装

操作系统任务命令
Windows打开命令控制台
c:\> java -version
Linux打开命令终端
# java -version
Mac打开终端
$ java -version

 ​​​​​​

2、Maven 下载

Maven 下载地址:Maven – Download Apache Maven

不同平台下载对应的包:

系统包名
Windowsapache-maven-3.9.5-bin.zip
Linuxapache-maven-3.9.5-bin.tar.gz
Macapache-maven-3.9.5-bin.tar.gz

maven历史版本:Index of /maven/maven-3 

这里我们直接安装3.9.5的Windows系统版本!

 

3、解压到对应目录

 Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,这里我解压到D:\Software\Java\Maven 下面。

系统存储位置 (可根据自己情况配置)
WindowsD:\Software\Java\Maven\apache-maven-3.3.9
Linux/usr/local/apache-maven-3.3.9
Mac/usr/local/apache-maven-3.3.9

解压后目录结构如下: 

  • bin:存放了 maven 的命令
  • boot:存放了一些 maven 本身的引导程序,如类加载器等
  • conf:存放了 maven 的一些配置文件,如 setting.xml 文件
  • lib:存放了 maven 本身运行所需的一些 jar 包

四、设置 Maven 环境变量

1、点击高级系统设置,再点击环境变量

2、添加环境变量 MAVEN_HOME: 

 3、编辑变量Path,添加变量值%MAVEN_HOME%\bin

%MAVEN_HOME%\bin


 参考:Maven 环境配置 | 菜鸟教程

系统配置
Windows

右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置:

新建系统变量 MAVEN_HOME,变量值:E:\Maven\apache-maven-3.3.9

编辑系统变量 Path,添加变量值:;%MAVEN_HOME%\bin

注意:注意多个值之间需要有分号隔开,然后点击确定。

Linux

下载解压:

# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
# tar -xvf  apache-maven-3.3.9-bin.tar.gz
# sudo mv -f apache-maven-3.3.9 /usr/local/

编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:

export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin

保存文件,并运行如下命令使环境变量生效:

# source /etc/profile

在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:

# mvn -v
Mac

下载解压:

$ curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
$ tar -xvf  apache-maven-3.3.9-bin.tar.gz
$ sudo mv -f apache-maven-3.3.9 /usr/local/

编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:

export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin

保存文件,并运行如下命令使环境变量生效:

$ source /etc/profile

在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:

$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_31, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: ISO8859-1
OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"

五、测试Maven是否安装成功

win+R 运行cmd 输入 mvn -version或者mvn -v,如图所示则配置成功

六、配置maven仓库

  • Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。

1. Maven的仓库分类

  • 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,
  • 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
  • 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件

2、配置本地仓库

1 初始化本地仓库

打开Windows终端输入:

mvn    // 初始化maven

Maven初始化后,会在C盘User文件夹-本地账号文件夹中自动创建.m2文件夹,包含一个空的名为Repository的文件夹。 

 

使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3(bundle)。

maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下:

当maven下的pom文件中的依赖逐渐增加时,maven仓库下面的jar包也会渐渐增多。

在这里,我们不推荐将本地仓库存放在C盘,所以我们需要将Repository文件夹删除,保留.m2即可。为了后续方便要给仓库换位置到D盘。

2 新建文件夹作Maven的本地仓库

在C盘之外的一个盘符中创建一个文件夹用来当作Maven的本地仓库

创建在D盘,即在D:\Software\Java\Maven文件下新创建一个文件夹为: Maven-Repository

3 进入Maven安装目录  配置本地仓库

在config文件夹中找到一个settings.xml 配置文件,用Notepad++打开,进行本地仓库的配置 

 在localRepository的注释标签下面添加

  <localRepository>D:\Software\Java\Maven\Maven-Repository</localRepository>

编辑完 ctrl + s 保存一下,先不用急着关闭该文件。 

3、配置中央仓库 

Maven作为项目构建及管理工具是如何管理jar包的。

首先每当我们开发一个项目的时候,需要导入一些项目需要的依赖,也就是相关的jar包,只有导入这些依赖,项目才能正常,高效地运行起来。

当我们需要某一个jar包的时候,我们需要在项目的pom.xml文件中去配置所需要的依赖以进行导入到项目中,则此时,Maven会先去本地仓库中查找是否存在相应的jar包,如果有,配置就能直接用,如果Maven在本地仓库中没有找到,则Maven会去中央仓库中下载相应的jar包存放到本地仓库在进行导入到项目中。

配置中央仓库只需要将下面的一段代码直接复制粘贴到settings.xml文件的<mirrors></mirrors>中即可。

<!-- 阿里云仓库 -->
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>        
</mirror>

以上为刚下载maven的相关配置。

如果已使用一段时间,需要更改Maven仓库位置,参考文章:

修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客


七、IDEA中配置Maven

1 打开IDEA 创建一个新的project

2 打开IDEA 选择File --> Settings --> 搜素maven,查看默认配置

3 修改默认配置配置

4 配置Maven的Runner参数

参数一: -DarchetypeCatalog=internal 解决使用骨架构建Maven项目时候会卡住的问题

参数二: -Dfile.encoding=GB2312 解决Maven工程中控制台输出中文乱码的问题

 

注意事项:

上述配置如果是在settings中进行配置则只会对当前Project生效,后续创建的新的Project不会生效

如果是在New Projects Setup里面的setting for new projects中配置,则会对后续创建的所有新的Project都生效,但是无法对当前项目生效

八、创建Maven工程

在IDEA中配置好maven后, 接下来我们使用maven去快速的去构建一个 JavaWeb项目

1 project创建好以后, 选择创建module

2 创建一个 maven 工程


点击 Next填写项目信息

进行一下修改

创建好的工程,长这个样子

Maven目录说明:

src/main/java          —— 存放项目的.java 文件 
src/main/resources      —— 存放项目资源文件,如数据库的配置文件 
src/test/java         —— 存放所有单元测试.java 文件,如 JUnit 测试类 
target                 —— 项目输出位置,编译后的class 文件会输出到此目录 
pom.xml              ——maven 项目核心配置文件 
1
2
3
4
5
3. Maven工程改造
当前创建的maven项目是一个 普通的Java项目,不是web项目,我们要进行一下改造

在main目录下创建一个webapp文件夹
————————————————
版权声明:本文为CSDN博主「格子衫111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012660464/article/details/114093066

 

 

相关文章:

Maven最新版本安装及配置

Maven是一个Java项目管理和构建工具&#xff0c;它可以定义项目结构、项目依赖&#xff0c;并使用统一的方式进行自动化构建&#xff0c;是Java项目不可缺少的工具。 本章我们详细介绍如何使用Maven。 一、Maven是什么&#xff1f; 如果每一个项目都自己搞一套配置&#xf…...

探索ClickHouse——使用MaterializedPostgreSQL同步PostgreSQL数据库

安装PostgreSQL sudo apt install postgresql修改配置 sudo vim /etc/postgresql/14/main/postgresql.conf 解开并修改wal_level 的配置项 wal_level logical 重启服务 /etc/init.d/postgresql restartRestarting postgresql (via systemctl): postgresql.service AUTHENTI…...

《向量数据库指南》——向量数据库 有必要走向专业化吗?

向量数据库 有必要走向专业化吗? 向量数据库系统的诞生,来源于具体业务需求——想要高效处理海量的向量数据,就需要更细分、更专业的数据基础设施,为向量构建专门的数据库处理系统。 但这种路径是必须的吗? 从产品层面讲,如果传统数据库厂商不单独研发向量数据库,那么…...

你必须知道的数据查询途径!!

在当今信息爆炸的时代&#xff0c;我们每天都会面临海量的数据和信息。如何在这些繁杂的信息中快速、准确地找到自己需要的内容&#xff0c;也是当代一个非常重要的技能。下面&#xff0c;我将介绍几种你必须知道的企业数据信息查找途径。 ​ 1. 搜索引擎 搜索引擎是我们日常中…...

火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法

声明 本文是学习GB-T 1871.5-2022 磷矿石和磷精矿中氧化镁含量的测定 火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件描述了在磷矿石和磷精矿中测定氧化镁含量的火焰原子吸收…...

亚马逊云科技 2023 柏林峰会主题演讲总结

欢迎来到我们的亚马逊云科技2023柏林峰会主题演讲全面总结&#xff01;在这篇文章中&#xff0c;我们将深入探讨在活动期间分享的主要公告、亮点和故事。通过这里的视频格式&#xff0c;展示了亚马逊云科技技术如何转化为商业和行业。 每年&#xff0c;亚马逊云科技峰会都会汇…...

CentOS Stream9 安装远程桌面服务 Xrdp

1. 安装 XRDP 若服务器本身没有桌面则首先需要安装本地桌面&#xff1a; yum -y groups install "GNOME Desktop" startx配置源&#xff1a; dnf install epel-release安装 xrdp dnf install xrdp 2. 配置 Xrdp Xrdp 配置文件位于 /etc/xrdp 目录中。对于常规 X…...

实施运维01

一.运维实施工程师所具备的知识 1.运维工程师&#xff0c;实施工程师是啥&#xff1f; 运维工程师负责服务的稳定性&#xff0c;确保服务无间断的为客户提供服务. 实施工程师负责工程的实施工作&#xff0c;负责现场培训&#xff0c;一般都要出差&#xff0c;哪里有项目就去…...

MySQL大表直接复制文件的copy方式

看腻了就来听听视频演示吧&#xff1a;https://www.bilibili.com/video/BV1Bp4y1F7kd/ MyISAM引擎可单独将 *.MYD和 *.MYI 拷贝到远程服务器上InnoDB引擎受限于版本&#xff08;MySQL5.5&#xff09;无法直接拷贝.ibd文件&#xff0c;因为在ibdata1文件保存有表的字典信息&…...

Redis-集群

Redis-集群 主从复制和哨兵只能在主节点进行写数据&#xff0c;从节点读取数据&#xff0c;因此本质上&#xff0c;是进行了读写的分离&#xff0c;每个节点都保存了所有的数据&#xff0c;并不能实现一个很好的分布式效果。 1.哈希求余算法 假设有N台主机&#xff0c;对每台…...

使用CrawlSpider爬取全站数据。

CrawpSpider和Spider的区别 CrawlSpider使用基于规则的方式来定义如何跟踪链接和提取数据。它支持定义规则来自动跟踪链接&#xff0c;并可以根据链接的特征来确定如何爬取和提取数据。CrawlSpider可以对多个页面进行同样的操作&#xff0c;所以可以爬取全站的数据。CrawlSpid…...

【JUC】Java并发编程从挖坑到入土全解(4-一文讲通LockSupport与线程中断->长图预警)

目录 LockSupport与线程中断 线程中断机制 什么是中断机制&#xff1f; 与中断相关的3个API 如何停止中断运行中的线程&#xff1f; 当前线程的中断标识为true&#xff0c;是不是线程就会立刻停止&#xff1f; 如何理解静态方法Thread.interrupted() LockSupport是什么…...

Springboot学习笔记——3

Springboot学习笔记——3 一、热部署1.1、手动启动热部署1.2、自动启动热部署1.3、热部署范围配置1.4、关闭热部署 二、配置高级2.1、第三方bean属性绑定2.2、松散绑定2.3、常用计量单位应用2.4、bean属性校验2.5、进制数据转换规则 三、测试3.1、加载测试专用属性3.2、加载测试…...

jupyter 切换虚拟环境

当前只有两个环kernel 我已经创建了很多虚拟环境&#xff0c;如何在notebook中使用这些虚拟环境呢&#xff1f;请看下面 比如说我要添加nlp 这个虚拟环境到notebook中 1. 切换到nlp环境 2. 安装如下模块 pip install ipykernel 3. 执行如下命令 python -m ipykernel install …...

如何在Apache和Resin环境中实现HTTP到HTTPS的自动跳转:一次全面的探讨与实践

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

安全防御—密码学

1. 什么是APT&#xff1f; APT&#xff08;Advanced Persistent Threat&#xff09;是指高级持续性威胁&#xff0c;本质是针对性攻击。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式&#xff0c;APT攻击的原理相对于其他攻击形式更为高级和先进&#xff0c;…...

灯具从深圳寄国际物流到墨西哥

在国际贸易的日益频繁的今天&#xff0c;越来越多的企业开始将产品销往海外市场。然而&#xff0c;如何将这些产品安全、快速地送达目的地&#xff0c;成为了每个企业都需要面对的问题。对于灯具这种重量大、体积大的物品来说&#xff0c;如何选择合适的国际物流方式&#xff0…...

spark3使用hive zstd压缩格式总结

ZSTD&#xff08;全称为Zstandard&#xff09;是一种开源的无损数据压缩算法&#xff0c;其压缩性能和压缩比均优于当前Hadoop支持的其他压缩格式&#xff0c;本特性使得Hive支持ZSTD压缩格式的表。Hive支持基于ZSTD压缩的存储格式有常见的ORC&#xff0c;RCFile&#xff0c;Te…...

直线导轨精度等级在设备中有什么影响?

直线导轨的精度选择是直线导轨应用中的重要环节&#xff0c;需要根据具体的应用场景和设备要求来选择合适的精度等级&#xff08;常见分3个等级&#xff1a;N/H/P&#xff09;。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念&#xff1a;直线导轨的精度等级是…...

windows平台FairMOT的实现

环境&#xff1a;python3.6pytorch1.1.0torchvision0.3.0cuda9.2vs2015 该项目需要装3个c库&#xff08;dcn_v2&#xff0c;apex&#xff0c;cython_bbox&#xff09;特别坑&#xff0c;各种环境不匹配&#xff0c;各种bug。本人c小白&#xff0c;但是一路摸索总算成功了。下面…...

Excel插件E灵实战:把杂乱的家庭成员明细表,一键变成规整的‘一户一档’报表

Excel插件E灵实战&#xff1a;从杂乱数据到专业报表的智能转换 在日常办公中&#xff0c;我们经常需要处理各种家庭成员信息表&#xff0c;这些原始数据往往杂乱无章&#xff0c;包含重复、缺失或不规范的记录。传统的手工整理方式不仅耗时费力&#xff0c;还容易出错。本文将详…...

联想刃7000k BIOS深度解锁技术实现与性能优化指南

联想刃7000k BIOS深度解锁技术实现与性能优化指南 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃7000k作为一款高性能游戏主…...

多模态大模型应用开发利器:xBrain工具箱核心解析与实战

1. 项目概述&#xff1a;一个面向多模态大模型的开源工具箱 最近在折腾大模型应用开发&#xff0c;特别是涉及到图像、文本、音频等多模态任务时&#xff0c;常常感到工具链的割裂。文本生成有成熟的框架&#xff0c;视觉任务又有另一套生态&#xff0c;想把它们高效地整合到一…...

希伯来文语音上线倒计时72小时!ElevenLabs生产环境紧急修复清单:DNS预热、SSL证书SNI兼容、以及3个必须禁用的默认voice preset

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;希伯来文语音上线倒计时72小时&#xff1a;全局技术态势与交付承诺 希伯来文语音合成&#xff08;Hebrew TTS&#xff09;系统已进入最终验证阶段&#xff0c;核心引擎完成全链路压力测试&#xff0c;平…...

VSCode经典体验配置指南:从界面净化到键盘流工作流打造

1. 项目概述&#xff1a;为什么我们需要一个“经典体验”的VSCode&#xff1f;如果你和我一样&#xff0c;是个在代码编辑器里泡了十多年的老程序员&#xff0c;那你一定经历过从记事本、Notepad、Sublime Text到Visual Studio Code&#xff08;VSCode&#xff09;的漫长迁徙。…...

树莓派边缘AI相机:3D打印外壳与TensorFlow Lite部署实战

1. 项目概述&#xff1a;打造一个专为边缘AI设计的“机器视觉大脑” 如果你正在捣鼓树莓派&#xff08;Raspberry Pi&#xff09;和BrainCraft HAT&#xff0c;想把机器学习模型从云端拉到设备端&#xff0c;搞点实时的图像识别、目标检测&#xff0c;那你大概率会遇到一个挺实…...

保姆级教程:用PyTorch复现DLA-34分割模型(含可变形卷积版DLAseg)

深度解析DLA-34分割模型&#xff1a;从理论到PyTorch实战 在计算机视觉领域&#xff0c;特征融合一直是提升模型性能的关键技术。Deep Layer Aggregation&#xff08;DLA&#xff09;作为CVPR 2018提出的创新架构&#xff0c;通过独特的树状连接机制实现了跨层级的深度特征融合…...

别再硬算幂函数了!FPGA图像处理中,用查找表(LUT)实现伽马校正的完整流程与资源优化

别再硬算幂函数了&#xff01;FPGA图像处理中&#xff0c;用查找表&#xff08;LUT&#xff09;实现伽马校正的完整流程与资源优化 在实时图像处理系统中&#xff0c;伽马校正&#xff08;Gamma Correction&#xff09;是一个无法绕开的关键环节。无论是医疗影像的增强显示&…...

Arduino库持续集成实战:Travis CI自动化编译测试指南

1. 项目概述&#xff1a;为什么Arduino库需要持续集成&#xff1f; 如果你和我一样&#xff0c;维护过几个甚至几十个Arduino库&#xff0c;那你一定对下面这个场景深恶痛绝&#xff1a;你修复了一个库里的Bug&#xff0c;或者添加了一个新功能&#xff0c;满怀信心地提交了代…...

Sunshine自托管游戏串流服务器:构建高性能私人云游戏平台的完整指南

Sunshine自托管游戏串流服务器&#xff1a;构建高性能私人云游戏平台的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管游戏串流服务器&am…...