登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情~
代码拉取完成,页面将自动刷新
开源项目
>
服务器应用
>
消息服务器/消息队列
&&
工业软件
>
IOT/物联网/边缘计算
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
242
Star
2.6K
Fork
797
dromara
/
mica-mqtt
代码
Issues
18
Pull Requests
0
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
使用中常见问题汇总 | 觉得有帮助请右上角 Star ♥️
置顶
待办的
#I45GO7
如梦技术
拥有者
创建于
2021-08-13 19:13
## 1、mica-mqtt-spring-boot-starter 空指针 NullPointerException 详细信息: Mqtt server IMqttMessageListener Bean not found 解决方案:IMqttMessageListener 为业务处理,必须要实现的接口。实现该接口并注册成 Spring Bean 即可。 ## 2、解码异常 - mqtt 3.1 版协议规定 clientId 范围 1~23, 如果不再此范围会报错,mica-mqtt 服务端提供了 maxClientIdLength 参数,请按需配置。(v2.1.1 开始最大长度默认为 64) - mica-mqtt 默认的最大包体长度为 8092(v1.3.6 开始默认为 10M),当包体大于这个值时会报异常,mica-mqtt 提供了 maxBytesInMessage 参数,请按需配置。 - mica-mqtt readBufferSize 默认为 8k,最大值可以设置为 132476(130k,受 t-io 限制),t-io 解码会尝试 10 次,也就是最大消息体支持 1.26 M。 - 如果要设置得更大,可以将 mica-mqtt readBufferSize 设置成 0 (v1.3.6 开始支持), - 然后在 java 启动变量中添加 `-Dtio.default.read.buffer.size=1048576` (1M,也就是最大支持 10M 消息体,请按需设置)。 - **大量消息,业务处理不赢**会导致解码异常,服务端可设置 `useQueueDecode(true)` 1.3.7 会默认成 true。不过业务一直处理不赢还是会照成更严重的问题。最后队列占满导致 jvm 内存溢出。建议集群并对接 kafka、rocketmq 等。 ## 3、NoSuchMethodError: java.nio.ByteBuffer.XXX(I)Ljava/nio/ByteBuffer; **存在此问题的版本**:`1.0.0`、`1.0.0-RC`、`1.0.3`、`1.0.4`、`2.4.5` 该问题主要是 jar 编译问题,由于 JDK9+ 改了 ByteBuffer 部分返回值的类型,导致 java9+ 下编译的 jar 在 java8 下运行会有问题。如果遇到此问题,请立刻反馈。 ## 4、多个客户端使用相同 clientId 导致前者被踢下线(周期性上下线) - 日志关键字 **准备关闭连接 ... now bind on new context id:[xxxx]** - clientId 对于在 mqtt 中起着十分重要的作用,请不要随意设置,建议按照产品、设备、sn等维度生成,并且**确保唯一**。 - 如果实在是要兼容老业务,可以实现 `IMqttServerUniqueIdService` (1.1.4开始支持) 接口,返回的 `uniqueId` 会替代 clientId,后续的场景也是需要使用这个 `uniqueId` 来处理。 ## 5、结合 emqx 监听消费,高压下重连 检查 emqx 配置,调整或关闭“强制关闭”的相关配置。  ## 6、nginx tcp 负载均衡 #### 6.1 搜索关键词 `nginx tcp 负载均衡` 即可: - https://zhuanlan.zhihu.com/p/139275668 - http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html #### 6.2 配置 /etc/nginx/nginx.conf,示例: ``` stream { upstream stream_backend { zone tcp_servers 64k; hash $remote_addr; server 192.168.0.2:1883 max_fails=2 fail_timeout=30s; server 192.168.0.3:1883 max_fails=2 fail_timeout=30s; } server { listen 8883 ssl; status_zone tcp_server; proxy_pass stream_backend; proxy_buffer_size 4k; proxy_protocol on; # 转发源ip信息, mica-mqtt 开源版 2.4.x 正式版开始支持。 ssl_handshake_timeout 15s; ssl_certificate /etc/emqx/certs/cert.pem; ssl_certificate_key /etc/emqx/certs/key.pem; } } ``` ## 7、Mqtt 集群 mica-mqtt 1.1.2 版本开始添加了 `mica-mqtt-broker` 模块,采用 redis pub/sub 实现集群,有需求的朋友可以参考。 ## 8、SNAPSHOT 版本使用(central sonatype 快照版仅仅存储 90 天,如果有使用需要尽快切到最新的正式版) **snapshots** 版本会及时响应修复最新的 bug 和需求。 **maven:** ```xml <repositories> <repository> <name>Central Portal Snapshots</name> <id>central-portal-snapshots</id> <url>https://central.sonatype.com/repository/maven-snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> ``` **gradle:** ```groovy repositories { maven { name = 'Central Portal Snapshots' url = 'https://central.sonatype.com/repository/maven-snapshots/' // Only search this repository for the specific dependency content { includeModule("<the snapshot's groupId>", "<the snapshot's artifactId>") } } mavenCentral() } ``` ## 9、ssl 证书 **注意**:mica-mqtt 从 v2.3.9 开始支持 PKCS12 证书,mica-mqtt 支持 JKS 和 PKCS12 证书,根据后缀判断。`.jks, .keystore` 文件后缀会识别成为 `JKS` 证书,`.p12 和 .pfx` 会识别成 `PKCS12` 证书。其他默认成 JKS。 **maven** `resources` 拷贝文件是默认会做 `filter`,会导致我们的文件发生变化,导致不能读,`pom` 中你需要添加下面的配置。 ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <nonFilteredFileExtensions> <nonFilteredFileExtension>jks</nonFilteredFileExtension> <nonFilteredFileExtension>pfx</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> ``` ### 9.1 申请的证书 腾讯云、阿里云等提供有 jks 证书,直接申请下载,记住申请时的密码: 代码中 `.useSsl("classpath:xxx.jks", "classpath:xxx.jks", "密码")` 即可 ### 9.2 自签证书(双向认证) 1. 按这个文章生成服务端和客户端证书:https://www.toolhelper.cn/SSL/SSLGenerate 点击下载,解压,拷贝 `generate.pfx` 到项目。 2. 服务端使用 `.useSsl("classpath:generate.pfx", "密码")` 开启 ssl。(v2.3.9 开始支持 .pfx 和 .p12 后缀) 3. 客户端 mqttx 使用如下图: **将 `generate.pfx` 转成 pem 证书** https://www.toolhelper.cn/SSL/PfxToPem  更多教程:openssl自签名证书教程(单域名证书/泛域名证书/多域名证书)详见:https://www.orcy.net.cn/340.html ## 10、服务器配置调优 详见: [**Linux 操作系统参数和TCP 协议栈网络参数**章节](https://www.emqx.io/docs/zh/v3.0/tune.html#linux-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%82%E6%95%B0) ## 11、Mqtt client 动态更新 clientId,username,password ```java /** * 客户端连接状态监听 * * @author L.cm */ @Service public class MqttClientConnectListener implements IMqttClientConnectListener { private static final Logger logger = LoggerFactory.getLogger(MqttClientConnectListener.class); @Autowired private ApplicationContext applicationContext; @Override public void onConnected(ChannelContext context, boolean isReconnect) { if (isReconnect) { logger.info("重连 mqtt 服务器重连成功..."); } else { logger.info("连接 mqtt 服务器成功..."); } } @Override public void onDisconnect(ChannelContext channelContext, Throwable throwable, String remark, boolean isRemove) { logger.error("mqtt 链接断开 remark:{} isRemove:{}", remark, isRemove, throwable); // 在断线时更新 clientId、username、password MqttClientCreator mqttClientCreator = applicationContext.getBean(MqttClientCreator.class); mqttClientCreator .clientId("newClient" + System.currentTimeMillis()) .username("newUserName") .password("newPassword"); } } ``` ## 12、浏览器 mqtt.js websocket 连接 **科普**:浏览器只能走 websocket mqtt 子协议,对应 mica-mqtt **8083** 端口。 **连错端口会报异常,如下:** ```java org.tio.core.exception.TioDecodeException: java.lang.IllegalArgumentException: invalid QoS: 3 at net.dreamlu.iot.mqtt.codec.MqttDecoder.doDecode(MqttDecoder.java:67) ``` **mqtt.js websocket 示例:** ```javascript const clientId = 'mqttjs_' + Math.random().toString(16).substr(2, 8) const host = 'ws://mqtt.dreamlu.net:8083/mqtt' const options = { keepalive: 60, clientId: clientId, username: 'mqtt登录用户名', password: 'mqtt登录密码', protocolId: 'MQTT', protocolVersion: 4, clean: true, reconnectPeriod: 1000, connectTimeout: 30 * 1000, will: { topic: 'WillMsg', payload: 'Connection Closed abnormally..!', qos: 0, retain: false }, } console.log('Connecting mqtt client') const client = mqtt.connect(host, options) client.on('error', (err) => { console.log('Connection error: ', err) client.end() }) client.on('reconnect', () => { console.log('Reconnecting...') }) ``` ## 13、mqtt 心跳超时 - 客户端默认心跳超时 60s - 服务端默认心跳检测 120s - 服务端会默认以 1.5倍(keepaliveBackoff * 2) 客户端心跳超时进行判断,最长周期最长 2.5 倍。(所以客户端实际超时时间为 90s ~ 150s) **拔网线**等**非正常断开**需要一个心跳检测周期才会触发断开。 如果设备可以监听到下电,可以发送 logout topic (子设备)或者 mqtt disconnect 下线指令(直连设备)可使设备状态更加准确。 ## 14、client、server 同时使用时 caffeine 依赖异常(v) ```java Failed to instantiate [net.dreamlu.iot.mqtt.core.server.MqttServer]: Factory method 'mqttServer' threw exception; nested exception is java.lang.NoClassDefFoundError: com/github/benmanes/caffeine/cache/RemovalListener ``` **解决方案:** pom 中将 mqtt server 依赖放 mqtt client 前面。 ## 15、结合 emqx 监听消费 qos1 或 qos2 消息被丢弃 适当调整会话消息队列长度  ## 16、问题:拉取 maven 包很慢或拉不了? 注意:如果在 IDEA 设置里指定了 settings.xml,下面两个方案可能会失效。(或者直接拿"腾讯云"或“华为云”或“阿里云” 的镜像仓库地址,按自己的习惯配置) * 腾讯云: https://mirrors.cloud.tencent.com/nexus/repository/maven-public/ * 华为云:https://mirrors.huaweicloud.com/repository/maven/ * 阿里云:https://maven.aliyun.com/repository/central (这是新地址,旧的不行) 以下以腾讯配置示例。 ***1、可以在项目的 pom.xml 添加 "腾讯" 的镜像仓库*** "阿里" 的仓库很难拉取到最新版本的 mica-mqtt 包,所以本案采用 "腾讯" 的镜像仓库进行加速 ```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> <!-- 使用时,可以项目的 pom.xml 里添加 repositories 内容 --> <repositories> <repository> <id>central</id> <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project> ``` ***2、或者可以在 .m2/settings.xml 添加 "腾讯" 的镜像仓库*** 开发工具如果可以为项目选择一个 settings.xml 的,可以选这个文件。 ```xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <mirrors> <mirror> <id>central</id> <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings> ``` ## 17、为什么群 突然解散了? 群没啥意义,没啥有用的反馈和意见,git issues 能记录问题,百度权重也很高。 有问题请 gitee 提 issues,**github 的消息太多了也经常好几天才会注意到**,谢谢!
## 1、mica-mqtt-spring-boot-starter 空指针 NullPointerException 详细信息: Mqtt server IMqttMessageListener Bean not found 解决方案:IMqttMessageListener 为业务处理,必须要实现的接口。实现该接口并注册成 Spring Bean 即可。 ## 2、解码异常 - mqtt 3.1 版协议规定 clientId 范围 1~23, 如果不再此范围会报错,mica-mqtt 服务端提供了 maxClientIdLength 参数,请按需配置。(v2.1.1 开始最大长度默认为 64) - mica-mqtt 默认的最大包体长度为 8092(v1.3.6 开始默认为 10M),当包体大于这个值时会报异常,mica-mqtt 提供了 maxBytesInMessage 参数,请按需配置。 - mica-mqtt readBufferSize 默认为 8k,最大值可以设置为 132476(130k,受 t-io 限制),t-io 解码会尝试 10 次,也就是最大消息体支持 1.26 M。 - 如果要设置得更大,可以将 mica-mqtt readBufferSize 设置成 0 (v1.3.6 开始支持), - 然后在 java 启动变量中添加 `-Dtio.default.read.buffer.size=1048576` (1M,也就是最大支持 10M 消息体,请按需设置)。 - **大量消息,业务处理不赢**会导致解码异常,服务端可设置 `useQueueDecode(true)` 1.3.7 会默认成 true。不过业务一直处理不赢还是会照成更严重的问题。最后队列占满导致 jvm 内存溢出。建议集群并对接 kafka、rocketmq 等。 ## 3、NoSuchMethodError: java.nio.ByteBuffer.XXX(I)Ljava/nio/ByteBuffer; **存在此问题的版本**:`1.0.0`、`1.0.0-RC`、`1.0.3`、`1.0.4`、`2.4.5` 该问题主要是 jar 编译问题,由于 JDK9+ 改了 ByteBuffer 部分返回值的类型,导致 java9+ 下编译的 jar 在 java8 下运行会有问题。如果遇到此问题,请立刻反馈。 ## 4、多个客户端使用相同 clientId 导致前者被踢下线(周期性上下线) - 日志关键字 **准备关闭连接 ... now bind on new context id:[xxxx]** - clientId 对于在 mqtt 中起着十分重要的作用,请不要随意设置,建议按照产品、设备、sn等维度生成,并且**确保唯一**。 - 如果实在是要兼容老业务,可以实现 `IMqttServerUniqueIdService` (1.1.4开始支持) 接口,返回的 `uniqueId` 会替代 clientId,后续的场景也是需要使用这个 `uniqueId` 来处理。 ## 5、结合 emqx 监听消费,高压下重连 检查 emqx 配置,调整或关闭“强制关闭”的相关配置。  ## 6、nginx tcp 负载均衡 #### 6.1 搜索关键词 `nginx tcp 负载均衡` 即可: - https://zhuanlan.zhihu.com/p/139275668 - http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html #### 6.2 配置 /etc/nginx/nginx.conf,示例: ``` stream { upstream stream_backend { zone tcp_servers 64k; hash $remote_addr; server 192.168.0.2:1883 max_fails=2 fail_timeout=30s; server 192.168.0.3:1883 max_fails=2 fail_timeout=30s; } server { listen 8883 ssl; status_zone tcp_server; proxy_pass stream_backend; proxy_buffer_size 4k; proxy_protocol on; # 转发源ip信息, mica-mqtt 开源版 2.4.x 正式版开始支持。 ssl_handshake_timeout 15s; ssl_certificate /etc/emqx/certs/cert.pem; ssl_certificate_key /etc/emqx/certs/key.pem; } } ``` ## 7、Mqtt 集群 mica-mqtt 1.1.2 版本开始添加了 `mica-mqtt-broker` 模块,采用 redis pub/sub 实现集群,有需求的朋友可以参考。 ## 8、SNAPSHOT 版本使用(central sonatype 快照版仅仅存储 90 天,如果有使用需要尽快切到最新的正式版) **snapshots** 版本会及时响应修复最新的 bug 和需求。 **maven:** ```xml <repositories> <repository> <name>Central Portal Snapshots</name> <id>central-portal-snapshots</id> <url>https://central.sonatype.com/repository/maven-snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> ``` **gradle:** ```groovy repositories { maven { name = 'Central Portal Snapshots' url = 'https://central.sonatype.com/repository/maven-snapshots/' // Only search this repository for the specific dependency content { includeModule("<the snapshot's groupId>", "<the snapshot's artifactId>") } } mavenCentral() } ``` ## 9、ssl 证书 **注意**:mica-mqtt 从 v2.3.9 开始支持 PKCS12 证书,mica-mqtt 支持 JKS 和 PKCS12 证书,根据后缀判断。`.jks, .keystore` 文件后缀会识别成为 `JKS` 证书,`.p12 和 .pfx` 会识别成 `PKCS12` 证书。其他默认成 JKS。 **maven** `resources` 拷贝文件是默认会做 `filter`,会导致我们的文件发生变化,导致不能读,`pom` 中你需要添加下面的配置。 ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <nonFilteredFileExtensions> <nonFilteredFileExtension>jks</nonFilteredFileExtension> <nonFilteredFileExtension>pfx</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> ``` ### 9.1 申请的证书 腾讯云、阿里云等提供有 jks 证书,直接申请下载,记住申请时的密码: 代码中 `.useSsl("classpath:xxx.jks", "classpath:xxx.jks", "密码")` 即可 ### 9.2 自签证书(双向认证) 1. 按这个文章生成服务端和客户端证书:https://www.toolhelper.cn/SSL/SSLGenerate 点击下载,解压,拷贝 `generate.pfx` 到项目。 2. 服务端使用 `.useSsl("classpath:generate.pfx", "密码")` 开启 ssl。(v2.3.9 开始支持 .pfx 和 .p12 后缀) 3. 客户端 mqttx 使用如下图: **将 `generate.pfx` 转成 pem 证书** https://www.toolhelper.cn/SSL/PfxToPem  更多教程:openssl自签名证书教程(单域名证书/泛域名证书/多域名证书)详见:https://www.orcy.net.cn/340.html ## 10、服务器配置调优 详见: [**Linux 操作系统参数和TCP 协议栈网络参数**章节](https://www.emqx.io/docs/zh/v3.0/tune.html#linux-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%82%E6%95%B0) ## 11、Mqtt client 动态更新 clientId,username,password ```java /** * 客户端连接状态监听 * * @author L.cm */ @Service public class MqttClientConnectListener implements IMqttClientConnectListener { private static final Logger logger = LoggerFactory.getLogger(MqttClientConnectListener.class); @Autowired private ApplicationContext applicationContext; @Override public void onConnected(ChannelContext context, boolean isReconnect) { if (isReconnect) { logger.info("重连 mqtt 服务器重连成功..."); } else { logger.info("连接 mqtt 服务器成功..."); } } @Override public void onDisconnect(ChannelContext channelContext, Throwable throwable, String remark, boolean isRemove) { logger.error("mqtt 链接断开 remark:{} isRemove:{}", remark, isRemove, throwable); // 在断线时更新 clientId、username、password MqttClientCreator mqttClientCreator = applicationContext.getBean(MqttClientCreator.class); mqttClientCreator .clientId("newClient" + System.currentTimeMillis()) .username("newUserName") .password("newPassword"); } } ``` ## 12、浏览器 mqtt.js websocket 连接 **科普**:浏览器只能走 websocket mqtt 子协议,对应 mica-mqtt **8083** 端口。 **连错端口会报异常,如下:** ```java org.tio.core.exception.TioDecodeException: java.lang.IllegalArgumentException: invalid QoS: 3 at net.dreamlu.iot.mqtt.codec.MqttDecoder.doDecode(MqttDecoder.java:67) ``` **mqtt.js websocket 示例:** ```javascript const clientId = 'mqttjs_' + Math.random().toString(16).substr(2, 8) const host = 'ws://mqtt.dreamlu.net:8083/mqtt' const options = { keepalive: 60, clientId: clientId, username: 'mqtt登录用户名', password: 'mqtt登录密码', protocolId: 'MQTT', protocolVersion: 4, clean: true, reconnectPeriod: 1000, connectTimeout: 30 * 1000, will: { topic: 'WillMsg', payload: 'Connection Closed abnormally..!', qos: 0, retain: false }, } console.log('Connecting mqtt client') const client = mqtt.connect(host, options) client.on('error', (err) => { console.log('Connection error: ', err) client.end() }) client.on('reconnect', () => { console.log('Reconnecting...') }) ``` ## 13、mqtt 心跳超时 - 客户端默认心跳超时 60s - 服务端默认心跳检测 120s - 服务端会默认以 1.5倍(keepaliveBackoff * 2) 客户端心跳超时进行判断,最长周期最长 2.5 倍。(所以客户端实际超时时间为 90s ~ 150s) **拔网线**等**非正常断开**需要一个心跳检测周期才会触发断开。 如果设备可以监听到下电,可以发送 logout topic (子设备)或者 mqtt disconnect 下线指令(直连设备)可使设备状态更加准确。 ## 14、client、server 同时使用时 caffeine 依赖异常(v) ```java Failed to instantiate [net.dreamlu.iot.mqtt.core.server.MqttServer]: Factory method 'mqttServer' threw exception; nested exception is java.lang.NoClassDefFoundError: com/github/benmanes/caffeine/cache/RemovalListener ``` **解决方案:** pom 中将 mqtt server 依赖放 mqtt client 前面。 ## 15、结合 emqx 监听消费 qos1 或 qos2 消息被丢弃 适当调整会话消息队列长度  ## 16、问题:拉取 maven 包很慢或拉不了? 注意:如果在 IDEA 设置里指定了 settings.xml,下面两个方案可能会失效。(或者直接拿"腾讯云"或“华为云”或“阿里云” 的镜像仓库地址,按自己的习惯配置) * 腾讯云: https://mirrors.cloud.tencent.com/nexus/repository/maven-public/ * 华为云:https://mirrors.huaweicloud.com/repository/maven/ * 阿里云:https://maven.aliyun.com/repository/central (这是新地址,旧的不行) 以下以腾讯配置示例。 ***1、可以在项目的 pom.xml 添加 "腾讯" 的镜像仓库*** "阿里" 的仓库很难拉取到最新版本的 mica-mqtt 包,所以本案采用 "腾讯" 的镜像仓库进行加速 ```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> <!-- 使用时,可以项目的 pom.xml 里添加 repositories 内容 --> <repositories> <repository> <id>central</id> <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project> ``` ***2、或者可以在 .m2/settings.xml 添加 "腾讯" 的镜像仓库*** 开发工具如果可以为项目选择一个 settings.xml 的,可以选这个文件。 ```xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <mirrors> <mirror> <id>central</id> <url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings> ``` ## 17、为什么群 突然解散了? 群没啥意义,没啥有用的反馈和意见,git issues 能记录问题,百度权重也很高。 有问题请 gitee 提 issues,**github 的消息太多了也经常好几天才会注意到**,谢谢!
评论 (
6
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(2)
Java
1
https://gitee.com/dromara/mica-mqtt.git
git@gitee.com:dromara/mica-mqtt.git
dromara
mica-mqtt
mica-mqtt
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册