爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Maven的生命周期和依赖传递(四)

      首页 知识中心 其他 文章详情页

      Maven的生命周期和依赖传递(四)

      2022-12-27 10:00:39 阅读次数:529

      生命周期,jar包,Maven


      古语有云: 万恶淫为首,百善孝为先。 我们后辈当自勉。

      上一章简单介绍了Maven的基本概念(三),如果没有看过,​​请观看上一章​​

      一. Maven的生命周期

      我们在第二章时,输入的那些命令,如 clean(清理),compile (编译),
      test(测试),package(打包),install(安装) ,可以被 Maven 处理并且运行, 这些命令是什么? 其实这些命令都是 Maven的生命周期。 生命周期, Servlet 有生命周期, 多线程也有生命周期, Maven自然也有生命周期。

      Maven 有三个标准的生命周期

      clean 周期, default 周期, site(站点) 周期。

      1 . clean : 项目清理的处理

      2 . default 默认周期,对项目部署的处理,最主要的。

      3 . site 项目站点文档创建的处理

      这三个生命周期,是完全不同的生命周期,针对的不是一件事。 clean 是管 项目的清理的, default 是管项目的部署的, site 是管站点文档创建的。

      一.一 clean 生命周期

      clean 清理生命周期,包括三个阶段:

      1 . pre-clean : 执行一些需要在 clean (第二阶段)之前执行的操作

      2 . clean : 移除所有上一次构建所生成的文件。 一般指 target 目录

      3 .post-clean: 执行一些需要在 clean(第二阶段) 之后执行的操作

      在执行各个阶段时,不论是 clean 周期,还是 default, site 周期, 执行后面的阶段,一定会把前面的阶段先执行。

      即: 如果我们执行 mvn clean 命令, 就会把 pre-clean 阶段也执行,并且是优先于 clean 执行

      mvc clean= mvc pre-clean clean 命令。

      mvc post-clean= mvc pre-clean clean post-clean

      故记住生命周期的阶段顺序是很有必要的。

      一.二 default 生命周期

      默认生命周期,是maven 的主要周期,主要用于对项目的 验证,编译,测试,打包,安装,部署 等主要的操作。

      下面的这些命令太长,直接从 ​​菜鸟教程的 Maven系列的 Maven 构建生命周期 一章摘录。 ​​ (菜鸟教程,一个很好的学习网站)

      共 23 个阶段

      生命周期阶段

      描述

      validate(校验)

      校验项目是否正确并且所有必要的信息可以完成项目的构建过程。

      initialize(初始化)

      初始化构建状态,比如设置属性值。

      generate-sources(生成源代码)

      生成包含在编译阶段中的任何源代码。

      process-sources(处理源代码)

      处理源代码,比如说,过滤任意值。

      generate-resources(生成资源文件)

      生成将会包含在项目包中的资源文件。

      process-resources (处理资源文件)

      复制和处理资源到目标目录,为打包阶段最好准备。

      compile(编译)

      编译项目的源代码。

      process-classes(处理类文件)

      处理编译生成的文件,比如说对Java class文件做字节码改善优化。

      generate-test-sources(生成测试源代码)

      生成包含在编译阶段中的任何测试源代码。

      process-test-sources(处理测试源代码)

      处理测试源代码,比如说,过滤任意值。

      generate-test-resources(生成测试资源文件)

      为测试创建资源文件。

      process-test-resources(处理测试资源文件)

      复制和处理测试资源到目标目录。

      test-compile(编译测试源码)

      编译测试源代码到测试目标目录.

      process-test-classes(处理测试类文件)

      处理测试源码编译生成的文件。

      test(测试)

      test(测试)

      prepare-package(准备打包)

      在实际打包之前,执行任何的必要的操作为打包做准备。

      package(打包

      将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。

      pre-integration-test(集成测试前)

      在执行集成测试前进行必要的动作。比如说,搭建需要的环境。

      integration-test(集成测试)

      处理和部署项目到可以运行集成测试环境中。

      post-integration-test(集成测试后)

      在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。

      verify (验证)

      运行任意的检查来验证项目包有效且达到质量标准。

      install(安装)

      安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。

      deploy(部署)

      将最终的项目包复制到远程仓库中与其他开发者和项目共享。

      1 .阶段很多啊,不需要我们全部忘记, 只需要记住一些常用的就可以了。

      常用的有: validate,compile, test, package, verify,install, deploy

      2 .我们运行后面的阶段,会自动将前面的阶段全部运行。

      相对的,运行某个命令出错,不一定是这个命令千万了出错,也可能是前面的出错了。 如 运行 package 打包命令出错了,不一定说是 package命令一定出错了, 可以是前面的 compile 或者 test 出错了,导致后面的阶段无法运行。

      3 .在运行的时候,可以同时运行一个生命周期的不同阶段,
      如 mvn compile test, mvc compile package

      这样的命令是可以的, 但不建议这么使用。

      4 .Maven 在运行时,可以跨生命周期进行运行,如同时运行 clean周期和default 周期。

      mvn clean package, mvn clean test 是完全可以的。

      先进行清理,再进行打包, 先进行清理,再进行测试。

      一.三 site 生命周期

      用来创造新的报告文档和部署站点。

      共有四个阶段:

      1 .pre-site 执行一些需要在生成站点文档之前完成的工作

      2 .site 生成项目的站点文档

      3 .post-site :执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

      4 . site-deploy: 将生成的站点文档部署到特定的服务器上

      常用的是 site 和site-deploy.

      二. 依赖

      二.一 jar包依赖规则

      有时候, 一个 jar包 不可能办成所有的事情,如文件上传的 common-fileupload.jar 包,只是完成了文件上传的部分,关于文件的复制之类的操作代码,并没有完成,而是依赖于 common-io.jar 包。 common-fileupload.jar 需要依赖于 common-io.jar包而存在, 即 如果你只添加了 common-fileupload.jar包,而不添加 common-io.jar包,那么系统会报错,报 ClassNotFoundException, 像这样的关系,叫做直接依赖。 项目A引用了项目B,那么项目B就是项目A的直接依赖。 有了直接依赖,那么就有间接依赖。项目A引用了项目B,而项目B又引用了项目C,那么项目C就是项目A的间接依赖。 当直接依赖和间接依赖多的时候,就容易出现问题。

      在一个项目里面,有很多的框架组成,如小型的 SSM框架。 里面有很多的jar包, Spring直接依赖于 某些jar包,如 日志类的, MyBatis 直接依赖于某些 Jar包,也有日志类的, Spring直接依赖的jar包与MyBatis直接依赖的Jar包 可能会有重复, 那么这些重复的jar包,该导入哪些呢,是导入Spring的,还是导入MyBatis的呢? 这只是直接依赖,还有可能有间接依赖, 如Spring间接依赖的jar包,与MyBatis间接依赖的jar包有重复,该用哪些呢? 该用哪些,实际上就是制定一些规则。 Maven导入jar包时,会自动将其依赖的jar包导入进来,且各个依赖包不造成冲突,就是因为这些规则.

      Maven的依赖规则有两个,也是符合现实情况的:

      1 . 最短路径者优先原则

      Maven的生命周期和依赖传递(四)

      A直接依赖于B, B直接依赖于C, 那么A间接依赖于 C

      B直接依赖于 D, C 直接依赖于D, A对D都是直接依赖,

      那么A依赖于的是哪个 D呢?

      就像走路一样, 走哪儿,能更快到 D呢? 当然是 A–B--D 的路径,而不是 A–B--C-D的路径。

      所以, A最后用的是 B依赖的 D jar包。

      2 . 先声明者优先原则

      Maven的生命周期和依赖传递(四)

      A直接依赖于B, B依赖于D, A间接依赖于D.

      A直接依赖于C, C依赖于D, A 间接依赖于D.

      A–B--D, A—C---D, 长度都一样,最短路径者优先原则不符合了。 这个是,谁先说去哪,就去哪。 即,用户者说走 A–B--D,那么就用 B依赖的 D, 用户者说走 A–C--D,那么就用 C依赖的 D. 用户说走哪,是默认根据 用户先声明的哪决定的。

      在pom.xml 的依赖 <dependencies > </dependencies > 里面, 先放置哪一个,就用哪一个。 你先放置 B, 那么D就是 B里面的, 你先放置 C, 那么D就是C 里面的。 所以在放置 依赖时,有一定的顺序。

      这两个原则, 是Maven 自己在找 jar包时依据的,与用户没有多大关系,用户不需要关心这个依赖规则,但必须要知道这两个依赖规则。

      下面这一个,才是与用户有关的,且必须要劳劳记住的。

      二.二 Jar包的依赖范围

      测试的jar包,如 junit4.12, 只希望在代码测试的时候使用,不希望在布署项目的时候 把这个jar包放置上去,这样可以减少资源, tomcat的jar包, server-api.jar, jsp-api.jar 在代码编译的时候有用,但在布署项目的时候,是没有的用的,并且是不能 把这个两个 jar包放置到tomcat里面的,因为tomcat 里面有这两个 jar包,会造成冲突, 所以一定要把这两个jar包 给去掉。 那这种情况该怎么办呢? 配置的依赖 jar包要是有一定的 使用范围就好了, 就就是 依赖范围。

      依赖范围有六种: compile, test, provided, runtime, import,system, 其中最常用的是 test 和provided,runtime

      1 .complie 编译依赖, 是默认的依赖范围。 在main 目录下的代码可以访问这个范围下的依赖,即jar包。 test 目录下的代码也可以访问这个范围下的依赖。 布署到 tomcat下时, 要把这个依赖放置在 WEB-INF 下的 lib 文件夹里面。

      2 . test 测试依赖,仅仅是测试使用的。 在main目录下的代码不能访问这个依赖, test 目录下的代码可以访问这个依赖, 布署到tomcat下时, 不会把这个依赖放置在 WEB-INF下的 lib文件夹里面。 如 junit 4.12 这个依赖。

      3 .provided 提供依赖 在main目录下的代码可以访问这个依赖, test目录下的代码也可以访问这个依赖, 但在布署到tomcat下时,不会把这个依赖放置在 WEB-INF 下的lib文件夹里面。 如 servlet-api, jsp-api

      4 .runtime 运行依赖。 main目录下的代码不能访问这个依赖, test目录下的代码可以访问这个依赖, 布署到tomcat下时,会把这个依赖放置在 WEB-INF 下的lib 文件夹里面。 如 jdbc 驱动

      5 . import(导入依赖) 和system(系统依赖) 目前用不到,老蝴蝶也不知道,就不讲解了。

      总结成一张图就是:

      Maven的生命周期和依赖传递(四)

      上面的这些,是直接依赖的范围。 还有间接依赖的范围。

      Maven的生命周期和依赖传递(四)

      A 直接依赖于B,间接依赖于 C,D,E, 如果C 为complie, 那么A可以使用, D为 test,E 为provided 那么 A不能使用。

      二.三 手动排除依赖

      在 二.一 讲解的依赖原则时, Maven会根据 最短路径者优先原则和 先声明者优先原则 两个原则,来决定选用哪个依赖。 但是,要保证一点,这两个依赖 的坐标,包括版本号 要完全一样, 这样Maven 才认为两个是相同的,才会选择其一。 但如果两个依赖的坐标,常见的是版本不一样,那么这个时候,Maven 就会把两个依赖都导入进来。 很显然,两个不同版本号的 jar包放在一起,很有可能会出现问题,所以就需要手动排除依赖了。

      选中 pom.xml 文件, 选择第三个选项卡 Dependency-Hierarchy , 找到那个版本不一致的 jar包, 如 spring-beans

      Maven的生命周期和依赖传递(四)

      选中 Exclude Maven Artifact ,进行排除即可

      查看 pom.xml 文件:

      <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-spring-plugin</artifactId>
      <version>2.3.24</version>
      <exclusions>
      <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      </exclusion>
      </exclusions>
      </dependency>

      用 exclusion 进行排除依赖

      这样在 struts2-spring-plugin 里面就不会有 spring-beans 这个 依赖了。

      谢谢!!!


      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/yueshushu/5841715,作者:两个蝴蝶飞,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:java8 Optional优雅非空判断

      下一篇:点击电脑图标,显示电脑界面。点击相同的二维码图标,显示二维码界面(七)

      相关文章

      2025-05-13 09:49:12

      Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

      Maven项目模块化是指将一个大型项目拆分成多个模块(Module)。

      2025-05-13 09:49:12
      maven , Maven , 模块 , 继承 , 项目
      2025-05-09 08:20:32

      基于IDEA的Maven简单工程创建及结构分析

      通过一个 mvn 命令直接让我们创建一个 Maven 的脚手架。

      2025-05-09 08:20:32
      java , Maven , xml , 创建 , 文件 , 文件夹 , 项目
      2025-05-09 08:20:32

      Maven之介绍

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

      2025-05-09 08:20:32
      jar , Maven , 一个 , 文件夹 , 标准化 , 流程 , 项目
      2025-05-08 09:03:29

      javaWeb过滤器Filter(二)

      javaWeb过滤器Filter(二)

      2025-05-08 09:03:29
      Filter , servlet , 标签 , 生命周期 , 过滤器
      2025-04-14 08:48:01

      如何处理Maven build时的error message Unable to locate the Javac Compiler in tools.jar

      如何处理Maven build时的error message Unable to locate the Javac Compiler in tools.jar

      2025-04-14 08:48:01
      jar , jar包 , java , Java
      2025-04-01 10:16:07

      深入解析 Spring Bean 的生命周期

      深入解析 Spring Bean 的生命周期

      2025-04-01 10:16:07
      Bean , Spring , 初始化 , 执行 , 接口 , 生命周期
      2025-04-01 09:21:49

      Spring Boot中解决BeanDefinitionStoreException问题的实战分享

      Spring Boot中解决BeanDefinitionStoreException问题的实战分享

      2025-04-01 09:21:49
      IDEA , Maven , 依赖 , 清理 , 版本 , 缓存 , 项目
      2025-03-28 07:41:43

      深入理解VUE对象生命周期——从创建到销毁的完整流程

      深入理解VUE对象生命周期——从创建到销毁的完整流程

      2025-03-28 07:41:43
      DOM , 函数 , 对象 , 生命周期 , 钩子 , 阶段 , 页面
      2025-03-25 08:08:18

      Maven在传统Spring项目中支持多环境打包

      Maven在传统Spring项目中支持多环境打包

      2025-03-25 08:08:18
      maven , Maven , 地址 , 打包 , 插件 , 环境 , 配置
      2025-03-11 09:35:14

      Android Lifecycle应用生命周期全局监听(前后台,销毁等)

      Android Lifecycle应用生命周期全局监听(前后台,销毁等)

      2025-03-11 09:35:14
      Event , 生命周期 , 监听
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5220366

      查看更多

      最新文章

      Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

      2025-05-13 09:49:12

      基于IDEA的Maven简单工程创建及结构分析

      2025-05-09 08:20:32

      Maven之介绍

      2025-05-09 08:20:32

      javaWeb过滤器Filter(二)

      2025-05-08 09:03:29

      深入理解VUE对象生命周期——从创建到销毁的完整流程

      2025-03-28 07:41:43

      Android Lifecycle应用生命周期全局监听(前后台,销毁等)

      2025-03-11 09:35:14

      查看更多

      热门文章

      WPF的APP生命周期以及全局异常捕获

      2023-02-08 10:33:56

      跟我学Android之十四 Activity的生命周期

      2022-11-22 03:00:53

      Maven 命令安装指定 jar 包到本地仓库

      2023-04-06 09:57:04

      如何使用IDEA将普通项目打成jar包 ?

      2023-04-06 06:34:48

      maven中使用jetty插件

      2023-03-08 10:27:37

      Libra教程之:Transaction的生命周期

      2023-03-30 06:57:13

      查看更多

      热门标签

      linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

      word分词--实例---用法

      Eclipse里使用Servlet实现简单的登录功能

      Libra教程之:Transaction的生命周期

      React工作9:react生命周期

      Gradle 项目的生命周期和settings文件

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号