mirror of
https://github.com/continew-org/continew-starter.git
synced 2025-09-09 08:57:17 +08:00
refactor(license): 优化 License 模块部分代码
This commit is contained in:
@@ -16,12 +16,229 @@
|
|||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- 扩展模块 - CRUD - 核心模块 -->
|
<!-- 核心模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-extension-crud-core</artifactId>
|
<artifactId>continew-starter-core</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- JSON 模块 - Jackson -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-json-jackson</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- API 文档模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-api-doc</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Web 模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-web</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 认证模块 - SaToken -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-auth-satoken</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 认证模块 - JustAuth -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-auth-justauth</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 数据访问模块 - MyBatis Plus -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-data-mp</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 数据访问模块 - MyBatis Flex -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-data-mf</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 数据访问模块 - 核心模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-data-core</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 缓存模块 - Redisson -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-cache-redisson</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 缓存模块 - Spring Cache -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-cache-springcache</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 缓存模块 - JetCache -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-cache-jetcache</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 安全模块 - 密码编码器 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-security-password</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 安全模块 - 加密 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-security-crypto</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 安全模块 - 脱敏 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-security-mask</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 安全模块 - XSS 过滤 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-security-xss</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- 安全模块 - 敏感词 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-security-sensitivewords</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 限流模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-ratelimiter</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 幂等模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-idempotent</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 链路追踪模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-trace</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 验证码模块 - 图形验证码 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-captcha-graphic</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 验证码模块 - 行为验证码 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-captcha-behavior</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 消息模块 - 邮件 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-messaging-mail</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 消息模块 - WebSocket -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-messaging-websocket</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 日志模块 - 基于拦截器实现(Spring Boot Actuator HttpTrace 增强版) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-log-interceptor</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 日志模块 - 基于 AOP 实现 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-log-aop</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 日志模块 - 核心模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-log-core</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 文件处理模块 - Excel -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-file-excel</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 存储模块 - 本地存储 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-storage-local</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 存储模块 - 对象存储 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-storage-oss</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 存储模块 - 核心模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-storage-core</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- License 模块 - 生成器 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-license-generator</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- License 模块 - 校验器 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-license-verifier</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- License 模块 - 核心模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>top.continew</groupId>
|
||||||
|
<artifactId>continew-starter-license-core</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 扩展模块 - CRUD - MyBatis Plus ORM 模块 -->
|
<!-- 扩展模块 - CRUD - MyBatis Plus ORM 模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
@@ -34,267 +251,36 @@
|
|||||||
<artifactId>continew-starter-extension-crud-mf</artifactId>
|
<artifactId>continew-starter-extension-crud-mf</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 扩展模块 - CRUD - 核心模块 -->
|
||||||
<!-- 扩展模块 - 数据权限 - 核心模块 -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-extension-datapermission-core</artifactId>
|
<artifactId>continew-starter-extension-crud-core</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 扩展模块 - 数据权限 - MyBatis Plus ORM 模块 -->
|
<!-- 扩展模块 - 数据权限 - MyBatis Plus ORM 模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-extension-datapermission-mp</artifactId>
|
<artifactId>continew-starter-extension-datapermission-mp</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 扩展模块 - 数据权限 - 核心模块 -->
|
||||||
<!-- 扩展模块 - 多租户 - 核心模块 -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-extension-tenant-core</artifactId>
|
<artifactId>continew-starter-extension-datapermission-core</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 扩展模块 - 多租户 - MyBatis Plus ORM 模块 -->
|
<!-- 扩展模块 - 多租户 - MyBatis Plus ORM 模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-extension-tenant-mp</artifactId>
|
<artifactId>continew-starter-extension-tenant-mp</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 扩展模块 - 多租户 - 核心模块 -->
|
||||||
<!-- 认证模块 - JustAuth -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-auth-justauth</artifactId>
|
<artifactId>continew-starter-extension-tenant-core</artifactId>
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 认证模块 - SaToken -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-auth-satoken</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 数据访问模块 - MyBatis Plus -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-data-mp</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 数据访问模块 - MyBatis Flex -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-data-mf</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 数据访问模块 - 核心模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-data-core</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 缓存模块 - JetCache -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-cache-jetcache</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 缓存模块 - Spring Cache -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-cache-springcache</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 缓存模块 - Redisson -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-cache-redisson</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 消息模块 - WebSocket -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-messaging-websocket</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 消息模块 - 邮件 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-messaging-mail</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 验证码模块 - 行为验证码 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-captcha-behavior</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 验证码模块 - 图形验证码 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-captcha-graphic</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 文件处理模块 - Excel -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-file-excel</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 存储模块 - 核心模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-storage-core</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 存储模块 - 本地存储 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-storage-local</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 存储模块 - 对象存储 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-storage-oss</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 日志模块 - 基于拦截器实现(Spring Boot Actuator HttpTrace 增强版) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-log-interceptor</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 日志模块 - 基于 AOP 实现 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-log-aop</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 日志模块 - 核心模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-log-core</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 链路追踪模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-trace</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 幂等模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-idempotent</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 限流模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-ratelimiter</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 安全模块 - XSS 过滤 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-security-xss</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 安全模块 - 敏感词 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-security-sensitivewords</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 安全模块 - 加密 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-security-crypto</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 安全模块 - 脱敏 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-security-mask</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 安全模块 - 密码编码器 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-security-password</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Web 模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-web</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- API 文档模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-api-doc</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- JSON 模块 - Jackson -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-json-jackson</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 核心模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-core</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- license 核心模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-license-core</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- license 生成模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-license-generate</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- license 校验模块 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-license-verify</artifactId>
|
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
<description>ContiNew Starter 缓存模块 - JetCache</description>
|
<description>ContiNew Starter 缓存模块 - JetCache</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- JetCache(一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作) -->
|
<!-- JetCache(基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alicp.jetcache</groupId>
|
<groupId>com.alicp.jetcache</groupId>
|
||||||
<artifactId>jetcache-autoconfigure</artifactId>
|
<artifactId>jetcache-autoconfigure</artifactId>
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
<artifactId>easy-captcha</artifactId>
|
<artifactId>easy-captcha</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- JS 引擎(一个纯编译的 JavaScript 引擎) -->
|
<!-- JS 引擎(纯编译的 JavaScript 引擎) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openjdk.nashorn</groupId>
|
<groupId>org.openjdk.nashorn</groupId>
|
||||||
<artifactId>nashorn-core</artifactId>
|
<artifactId>nashorn-core</artifactId>
|
||||||
|
@@ -34,6 +34,21 @@ public class PropertiesConstants {
|
|||||||
*/
|
*/
|
||||||
public static final String ENABLED = "enabled";
|
public static final String ENABLED = "enabled";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web 配置
|
||||||
|
*/
|
||||||
|
public static final String WEB = CONTINEW_STARTER + StringConstants.DOT + "web";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web-跨域配置
|
||||||
|
*/
|
||||||
|
public static final String WEB_CORS = WEB + StringConstants.DOT + "cors";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web-响应配置
|
||||||
|
*/
|
||||||
|
public static final String WEB_RESPONSE = WEB + StringConstants.DOT + "response";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 安全配置
|
* 安全配置
|
||||||
*/
|
*/
|
||||||
@@ -60,29 +75,19 @@ public class PropertiesConstants {
|
|||||||
public static final String SECURITY_XSS = SECURITY + StringConstants.DOT + "xss";
|
public static final String SECURITY_XSS = SECURITY + StringConstants.DOT + "xss";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web 配置
|
* 限流配置
|
||||||
*/
|
*/
|
||||||
public static final String WEB = CONTINEW_STARTER + StringConstants.DOT + "web";
|
public static final String RATE_LIMITER = CONTINEW_STARTER + StringConstants.DOT + "rate-limiter";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web-跨域配置
|
* 幂等配置
|
||||||
*/
|
*/
|
||||||
public static final String WEB_CORS = WEB + StringConstants.DOT + "cors";
|
public static final String IDEMPOTENT = CONTINEW_STARTER + StringConstants.DOT + "idempotent";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Web-响应配置
|
* 链路追踪配置
|
||||||
*/
|
*/
|
||||||
public static final String WEB_RESPONSE = WEB + StringConstants.DOT + "response";
|
public static final String TRACE = CONTINEW_STARTER + StringConstants.DOT + "trace";
|
||||||
|
|
||||||
/**
|
|
||||||
* 日志配置
|
|
||||||
*/
|
|
||||||
public static final String LOG = CONTINEW_STARTER + StringConstants.DOT + "log";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 存储配置
|
|
||||||
*/
|
|
||||||
public static final String STORAGE = CONTINEW_STARTER + StringConstants.DOT + "storage";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证码配置
|
* 验证码配置
|
||||||
@@ -109,6 +114,31 @@ public class PropertiesConstants {
|
|||||||
*/
|
*/
|
||||||
public static final String MESSAGING_WEBSOCKET = MESSAGING + StringConstants.DOT + "websocket";
|
public static final String MESSAGING_WEBSOCKET = MESSAGING + StringConstants.DOT + "websocket";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日志配置
|
||||||
|
*/
|
||||||
|
public static final String LOG = CONTINEW_STARTER + StringConstants.DOT + "log";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存储配置
|
||||||
|
*/
|
||||||
|
public static final String STORAGE = CONTINEW_STARTER + StringConstants.DOT + "storage";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* License 配置
|
||||||
|
*/
|
||||||
|
public static final String LICENSE = CONTINEW_STARTER + StringConstants.DOT + "license";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* License 生成器配置
|
||||||
|
*/
|
||||||
|
public static final String LICENSE_GENERATOR = LICENSE + StringConstants.DOT + "generator";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* License 校验器配置
|
||||||
|
*/
|
||||||
|
public static final String LICENSE_VERIFIER = LICENSE + StringConstants.DOT + "verifier";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CRUD 配置
|
* CRUD 配置
|
||||||
*/
|
*/
|
||||||
@@ -124,36 +154,6 @@ public class PropertiesConstants {
|
|||||||
*/
|
*/
|
||||||
public static final String TENANT = CONTINEW_STARTER + StringConstants.DOT + "tenant";
|
public static final String TENANT = CONTINEW_STARTER + StringConstants.DOT + "tenant";
|
||||||
|
|
||||||
/**
|
|
||||||
* 限流配置
|
|
||||||
*/
|
|
||||||
public static final String RATE_LIMITER = CONTINEW_STARTER + StringConstants.DOT + "rate-limiter";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 幂等配置
|
|
||||||
*/
|
|
||||||
public static final String IDEMPOTENT = CONTINEW_STARTER + StringConstants.DOT + "idempotent";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 链路追踪配置
|
|
||||||
*/
|
|
||||||
public static final String TRACE = CONTINEW_STARTER + StringConstants.DOT + "trace";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* license配置
|
|
||||||
*/
|
|
||||||
public static final String LICENSE = CONTINEW_STARTER + StringConstants.DOT + "license";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* license 生成模块配置
|
|
||||||
*/
|
|
||||||
public static final String LICENSE_GENERATE = LICENSE + StringConstants.DOT + "generate";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* license 校验模块配置
|
|
||||||
*/
|
|
||||||
public static final String LICENSE_VERIFY = LICENSE + StringConstants.DOT + "verify";
|
|
||||||
|
|
||||||
private PropertiesConstants() {
|
private PropertiesConstants() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -44,14 +44,12 @@
|
|||||||
<ip2region.version>3.3.6</ip2region.version>
|
<ip2region.version>3.3.6</ip2region.version>
|
||||||
<hutool.version>5.8.36</hutool.version>
|
<hutool.version>5.8.36</hutool.version>
|
||||||
<snakeyaml.version>2.4</snakeyaml.version>
|
<snakeyaml.version>2.4</snakeyaml.version>
|
||||||
|
<truelicense.version>1.33</truelicense.version>
|
||||||
|
<zip4j.version>2.11.5</zip4j.version>
|
||||||
<!-- 解决部分传递依赖漏洞问题 -->
|
<!-- 解决部分传递依赖漏洞问题 -->
|
||||||
<commons-beanutils.version>1.9.4</commons-beanutils.version>
|
<commons-beanutils.version>1.9.4</commons-beanutils.version>
|
||||||
<commons-io.version>2.17.0</commons-io.version>
|
<commons-io.version>2.17.0</commons-io.version>
|
||||||
<commons-compress.version>1.26.0</commons-compress.version>
|
<commons-compress.version>1.26.0</commons-compress.version>
|
||||||
<!--license-->
|
|
||||||
<truelicense.version>1.33</truelicense.version>
|
|
||||||
<zip4j.version>2.11.5</zip4j.version>
|
|
||||||
|
|
||||||
<!-- Maven Plugin Versions -->
|
<!-- Maven Plugin Versions -->
|
||||||
<flatten.version>1.7.0</flatten.version>
|
<flatten.version>1.7.0</flatten.version>
|
||||||
<spotless.version>2.44.3</spotless.version>
|
<spotless.version>2.44.3</spotless.version>
|
||||||
@@ -85,7 +83,7 @@
|
|||||||
<version>${redisson.version}</version>
|
<version>${redisson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- JetCache(一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作) -->
|
<!-- JetCache(基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alicp.jetcache</groupId>
|
<groupId>com.alicp.jetcache</groupId>
|
||||||
<artifactId>jetcache-bom</artifactId>
|
<artifactId>jetcache-bom</artifactId>
|
||||||
@@ -227,14 +225,14 @@
|
|||||||
<version>${easy-captcha.version}</version>
|
<version>${easy-captcha.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- JS 引擎(一个纯编译的 JavaScript 引擎) -->
|
<!-- JS 引擎(纯编译的 JavaScript 引擎) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openjdk.nashorn</groupId>
|
<groupId>org.openjdk.nashorn</groupId>
|
||||||
<artifactId>nashorn-core</artifactId>
|
<artifactId>nashorn-core</artifactId>
|
||||||
<version>${nashorn.version}</version>
|
<version>${nashorn.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Easy Excel(一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具) -->
|
<!-- Easy Excel(基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>easyexcel</artifactId>
|
<artifactId>easyexcel</artifactId>
|
||||||
@@ -283,14 +281,14 @@
|
|||||||
<version>${thumbnails.version}</version>
|
<version>${thumbnails.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Graceful Response(一个Spring Boot技术栈下的优雅响应处理组件,可以帮助开发者完成响应数据封装、异常处理、错误码填充等过程,提高开发效率,提高代码质量) -->
|
<!-- Graceful Response(Spring Boot技术栈下的优雅响应处理组件,可以帮助开发者完成响应数据封装、异常处理、错误码填充等过程,提高开发效率,提高代码质量) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.feiniaojin</groupId>
|
<groupId>com.feiniaojin</groupId>
|
||||||
<artifactId>graceful-response</artifactId>
|
<artifactId>graceful-response</artifactId>
|
||||||
<version>${graceful-response.version}</version>
|
<version>${graceful-response.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Crane4j(一个基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架) -->
|
<!-- Crane4j(基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.crane4j</groupId>
|
<groupId>cn.crane4j</groupId>
|
||||||
<artifactId>crane4j-spring-boot-starter</artifactId>
|
<artifactId>crane4j-spring-boot-starter</artifactId>
|
||||||
@@ -320,7 +318,7 @@
|
|||||||
<version>${snakeyaml.version}</version>
|
<version>${snakeyaml.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- OkHTTP(一个默认高效的 HTTP 客户端) -->
|
<!-- OkHTTP(默认高效的 HTTP 客户端) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.squareup.okhttp3</groupId>
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
<artifactId>okhttp</artifactId>
|
<artifactId>okhttp</artifactId>
|
||||||
@@ -355,6 +353,19 @@
|
|||||||
<version>${hutool.version}</version>
|
<version>${hutool.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- TrueLicense (开源的证书管理引擎) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.schlichtherle.truelicense</groupId>
|
||||||
|
<artifactId>truelicense-core</artifactId>
|
||||||
|
<version>${truelicense.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Zip4j (开源的 Java 处理 zip 压缩文件的开发包) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.lingala.zip4j</groupId>
|
||||||
|
<artifactId>zip4j</artifactId>
|
||||||
|
<version>${zip4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 解决部分传递依赖漏洞问题 -->
|
<!-- 解决部分传递依赖漏洞问题 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-beanutils</groupId>
|
<groupId>commons-beanutils</groupId>
|
||||||
@@ -374,20 +385,6 @@
|
|||||||
<version>${commons-compress.version}</version>
|
<version>${commons-compress.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- license 依赖-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>de.schlichtherle.truelicense</groupId>
|
|
||||||
<artifactId>truelicense-core</artifactId>
|
|
||||||
<version>${truelicense.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!--zip4j压缩文件-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.lingala.zip4j</groupId>
|
|
||||||
<artifactId>zip4j</artifactId>
|
|
||||||
<version>${zip4j.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- ContiNew Starter 依赖 -->
|
<!-- ContiNew Starter 依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
<description>ContiNew Starter 扩展模块 - CRUD(增删改查) - 核心模块</description>
|
<description>ContiNew Starter 扩展模块 - CRUD(增删改查) - 核心模块</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Crane4j(一个基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架) -->
|
<!-- Crane4j(基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.crane4j</groupId>
|
<groupId>cn.crane4j</groupId>
|
||||||
<artifactId>crane4j-spring-boot-starter</artifactId>
|
<artifactId>crane4j-spring-boot-starter</artifactId>
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
<description>ContiNew Starter 文件处理模块 - Excel</description>
|
<description>ContiNew Starter 文件处理模块 - Excel</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Easy Excel(一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具) -->
|
<!-- Easy Excel(基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>easyexcel</artifactId>
|
<artifactId>easyexcel</artifactId>
|
||||||
|
@@ -7,27 +7,27 @@
|
|||||||
<artifactId>continew-starter-license</artifactId>
|
<artifactId>continew-starter-license</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>continew-starter-license-core</artifactId>
|
|
||||||
<description>ContiNew Starter License核心模块</description>
|
|
||||||
<dependencies>
|
|
||||||
|
|
||||||
<!-- continew starter 核心模块 -->
|
<artifactId>continew-starter-license-core</artifactId>
|
||||||
|
<description>ContiNew Starter License 模块 - 核心模块</description>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- 核心模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-core</artifactId>
|
<artifactId>continew-starter-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- license 依赖-->
|
<!-- TrueLicense (一个开源的证书管理引擎)-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.schlichtherle.truelicense</groupId>
|
<groupId>de.schlichtherle.truelicense</groupId>
|
||||||
<artifactId>truelicense-core</artifactId>
|
<artifactId>truelicense-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--zip4j压缩文件-->
|
<!-- Zip4j (开源的 Java 处理 zip 压缩文件的开发包) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.lingala.zip4j</groupId>
|
<groupId>net.lingala.zip4j</groupId>
|
||||||
<artifactId>zip4j</artifactId>
|
<artifactId>zip4j</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
@@ -26,7 +26,7 @@ import java.io.Serializable;
|
|||||||
*
|
*
|
||||||
* @author echo
|
* @author echo
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class BuildCreatorResp implements Serializable {
|
public class BuildCreatorResp implements Serializable {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
@@ -38,7 +38,7 @@ public class BuildCreatorResp implements Serializable {
|
|||||||
private LicenseCreatorParam param;
|
private LicenseCreatorParam param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端zip文件
|
* 客户端 Zip 文件
|
||||||
*/
|
*/
|
||||||
private ZipFile clientZipFile;
|
private ZipFile clientZipFile;
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ package top.continew.license.model;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class ConfigParam {
|
public class ConfigParam {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -30,6 +30,7 @@ import java.io.InputStream;
|
|||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
*/
|
*/
|
||||||
public class CustomKeyStoreParam extends AbstractKeyStoreParam {
|
public class CustomKeyStoreParam extends AbstractKeyStoreParam {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 密钥路径,可为磁盘路径,也可为项目资源文件里的路径,如果为磁盘路径需重写getStream()方法
|
* 密钥路径,可为磁盘路径,也可为项目资源文件里的路径,如果为磁盘路径需重写getStream()方法
|
||||||
*/
|
*/
|
||||||
@@ -50,8 +51,8 @@ public class CustomKeyStoreParam extends AbstractKeyStoreParam {
|
|||||||
*/
|
*/
|
||||||
private String keyPass;
|
private String keyPass;
|
||||||
|
|
||||||
public CustomKeyStoreParam(Class aClass, String s) {
|
public CustomKeyStoreParam(Class clazz, String s) {
|
||||||
super(aClass, s);
|
super(clazz, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CustomKeyStoreParam(Class clazz, String resource, String alias, String storePass, String keyPass) {
|
public CustomKeyStoreParam(Class clazz, String resource, String alias, String storePass, String keyPass) {
|
||||||
|
@@ -25,7 +25,7 @@ import java.util.Date;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class LicenseCreatorParam implements Serializable {
|
public class LicenseCreatorParam implements Serializable {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
|
@@ -23,7 +23,7 @@ import java.util.Date;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class LicenseCreatorParamVO {
|
public class LicenseCreatorParamVO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -23,7 +23,7 @@ import java.util.Set;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class LicenseExtraModel {
|
public class LicenseExtraModel {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -28,11 +28,14 @@ import java.io.LineNumberReader;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
public class ExecCmdUtil {
|
public class ExecCmdUtil {
|
||||||
|
|
||||||
private static final String CREATE_3RDSESSION_SHELL_SCRIPT = "head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168";
|
private static final String CREATE_3RDSESSION_SHELL_SCRIPT = "head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168";
|
||||||
|
|
||||||
|
private ExecCmdUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行cmd命令(shell脚本)
|
* 执行cmd命令(shell脚本)
|
||||||
*
|
*
|
||||||
@@ -82,7 +85,6 @@ public class ExecCmdUtil {
|
|||||||
* 执行linux命令(shell脚本)生成3rd_session随机数
|
* 执行linux命令(shell脚本)生成3rd_session随机数
|
||||||
*/
|
*/
|
||||||
public static String create3rdSessionToken() throws IOException {
|
public static String create3rdSessionToken() throws IOException {
|
||||||
|
|
||||||
return exec(CREATE_3RDSESSION_SHELL_SCRIPT);
|
return exec(CREATE_3RDSESSION_SHELL_SCRIPT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -52,6 +52,9 @@ public class ServerInfoUtils {
|
|||||||
private static String mainBoardSerial = null;
|
private static String mainBoardSerial = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ServerInfoUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组装需要额外校验的License参数
|
* 组装需要额外校验的License参数
|
||||||
*
|
*
|
||||||
@@ -324,7 +327,6 @@ public class ServerInfoUtils {
|
|||||||
* @throws Exception 默认异常
|
* @throws Exception 默认异常
|
||||||
*/
|
*/
|
||||||
private static Set<InetAddress> getLocalAllInetAddress() throws Exception {
|
private static Set<InetAddress> getLocalAllInetAddress() throws Exception {
|
||||||
|
|
||||||
Set<InetAddress> result = CollUtil.newHashSet();
|
Set<InetAddress> result = CollUtil.newHashSet();
|
||||||
// 遍历所有的网络接口
|
// 遍历所有的网络接口
|
||||||
for (Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
|
for (Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
|
||||||
@@ -342,5 +344,4 @@ public class ServerInfoUtils {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,82 +0,0 @@
|
|||||||
## continew-starter-license-generate 使用方法
|
|
||||||
|
|
||||||
1. 引入依赖
|
|
||||||
|
|
||||||
```java
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-license-generate</artifactId>
|
|
||||||
<version>2.11.0-SNAPSHOT</version>
|
|
||||||
</dependency>
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 开发对外接口
|
|
||||||
|
|
||||||
```
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package top.continew.admin.controller.license;
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import top.continew.license.model.LicenseCreatorParamVO;
|
|
||||||
import top.continew.license.model.LicenseExtraModel;
|
|
||||||
import top.continew.license.service.LicenseCreateService;
|
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Desc:
|
|
||||||
* @Author loach
|
|
||||||
* @ClassName top.continew.admin.controller.license.LicenseGenerateController
|
|
||||||
* @Date 2025-04-15 10:52
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/license")
|
|
||||||
public class LicenseGenerateController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private LicenseCreateService licenseCreateService;
|
|
||||||
|
|
||||||
@GetMapping("/generate")
|
|
||||||
public void listDict() throws Exception {
|
|
||||||
//设置证书校验参数
|
|
||||||
LicenseCreatorParamVO paramVO = new LicenseCreatorParamVO();
|
|
||||||
paramVO.setCustomerName("continew");
|
|
||||||
paramVO.setDescription("continew");
|
|
||||||
paramVO.setKeyPass("123456a");
|
|
||||||
paramVO.setStorePass("123456a");
|
|
||||||
//设置过期时间
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
long expire = Instant.now().toEpochMilli() + (24L * 3600L * 1000L);;
|
|
||||||
// long expire = new Date().getTime() + (24L * 3600L * 1000L);
|
|
||||||
calendar.setTimeInMillis(expire);
|
|
||||||
paramVO.setExpireTime(calendar.getTime());
|
|
||||||
//设置额外校验参数(服务器信息)
|
|
||||||
LicenseExtraModel extraModel = licenseCreateService.getServerInfo();
|
|
||||||
paramVO.setLicenseExtraModel(extraModel);
|
|
||||||
licenseCreateService.generateLicense(paramVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
注:默认生成 license 为FileUtil.getTmpDirPath()下。将压缩包发送给客户端使用。
|
|
@@ -9,16 +9,14 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>continew-starter-license-verify</artifactId>
|
<artifactId>continew-starter-license-generator</artifactId>
|
||||||
<packaging>jar</packaging>
|
<description>ContiNew Starter License 模块 - 生成器</description>
|
||||||
<description>ContiNew Starter License校验模块</description>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- license 核心模块 -->
|
<!-- License 模块 - 核心模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-license-core</artifactId>
|
<artifactId>continew-starter-license-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@@ -36,7 +36,7 @@ import top.continew.starter.core.constant.PropertiesConstants;
|
|||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
@EnableConfigurationProperties(LicenseGenerateProperties.class)
|
@EnableConfigurationProperties(LicenseGenerateProperties.class)
|
||||||
@ConditionalOnProperty(prefix = PropertiesConstants.LICENSE_GENERATE, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true)
|
@ConditionalOnProperty(prefix = PropertiesConstants.LICENSE_GENERATOR, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true)
|
||||||
public class LicenseGenerateAutoConfiguration {
|
public class LicenseGenerateAutoConfiguration {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(LicenseGenerateAutoConfiguration.class);
|
private static final Logger log = LoggerFactory.getLogger(LicenseGenerateAutoConfiguration.class);
|
||||||
@@ -52,6 +52,6 @@ public class LicenseGenerateAutoConfiguration {
|
|||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void postConstruct() {
|
public void postConstruct() {
|
||||||
log.debug("[ContiNew Starter] - Auto Configuration 'License-Generate' completed initialization.");
|
log.debug("[ContiNew Starter] - Auto Configuration 'License-Generator' completed initialization.");
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -25,8 +25,9 @@ import top.continew.starter.core.constant.PropertiesConstants;
|
|||||||
* @author Jasmine
|
* @author Jasmine
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
*/
|
*/
|
||||||
@ConfigurationProperties(PropertiesConstants.LICENSE_GENERATE)
|
@ConfigurationProperties(PropertiesConstants.LICENSE_GENERATOR)
|
||||||
public class LicenseGenerateProperties {
|
public class LicenseGenerateProperties {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否启用
|
* 是否启用
|
||||||
*/
|
*/
|
@@ -43,8 +43,7 @@ import java.util.prefs.Preferences;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
|
|
||||||
public class LicenseCreateService {
|
public class LicenseCreateService {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(LicenseCreateService.class);
|
private static final Logger log = LoggerFactory.getLogger(LicenseCreateService.class);
|
||||||
@@ -88,7 +87,6 @@ public class LicenseCreateService {
|
|||||||
* @throws Exception 例外
|
* @throws Exception 例外
|
||||||
*/
|
*/
|
||||||
public void generateLicense(LicenseCreatorParamVO paramVO) throws Exception {
|
public void generateLicense(LicenseCreatorParamVO paramVO) throws Exception {
|
||||||
|
|
||||||
BuildCreatorResp buildCreatorResp = buildCreator(paramVO);
|
BuildCreatorResp buildCreatorResp = buildCreator(paramVO);
|
||||||
LicenseCreatorParam param = buildCreatorResp.getParam();
|
LicenseCreatorParam param = buildCreatorResp.getParam();
|
||||||
ZipFile clientZipFile = buildCreatorResp.getClientZipFile();
|
ZipFile clientZipFile = buildCreatorResp.getClientZipFile();
|
||||||
@@ -186,7 +184,6 @@ public class LicenseCreateService {
|
|||||||
private ZipFile generateClientConfig(LicenseCreatorParam param,
|
private ZipFile generateClientConfig(LicenseCreatorParam param,
|
||||||
String currentCustomerDir,
|
String currentCustomerDir,
|
||||||
String publicAlias) throws Exception {
|
String publicAlias) throws Exception {
|
||||||
|
|
||||||
ZipFile clientLicense = new ZipFile(currentCustomerDir + "clientLicense.zip");
|
ZipFile clientLicense = new ZipFile(currentCustomerDir + "clientLicense.zip");
|
||||||
File config = new File(currentCustomerDir + "clientConfig.json");
|
File config = new File(currentCustomerDir + "clientConfig.json");
|
||||||
ConfigParam configParam = new ConfigParam();
|
ConfigParam configParam = new ConfigParam();
|
||||||
@@ -254,7 +251,6 @@ public class LicenseCreateService {
|
|||||||
* @return {@link String }
|
* @return {@link String }
|
||||||
*/
|
*/
|
||||||
private String relativePath(LicenseCreatorParamVO paramVO) {
|
private String relativePath(LicenseCreatorParamVO paramVO) {
|
||||||
|
|
||||||
if (paramVO.getLicenseSavePath() != null) {
|
if (paramVO.getLicenseSavePath() != null) {
|
||||||
return paramVO.getLicenseSavePath();
|
return paramVO.getLicenseSavePath();
|
||||||
}
|
}
|
||||||
@@ -284,7 +280,6 @@ public class LicenseCreateService {
|
|||||||
* @return {@link LicenseContent }
|
* @return {@link LicenseContent }
|
||||||
*/
|
*/
|
||||||
private LicenseContent initLicenseContent(LicenseCreatorParam param) {
|
private LicenseContent initLicenseContent(LicenseCreatorParam param) {
|
||||||
|
|
||||||
LicenseContent licenseContent = new LicenseContent();
|
LicenseContent licenseContent = new LicenseContent();
|
||||||
licenseContent.setHolder(DEFAULT_HOLDER_ISSUER);
|
licenseContent.setHolder(DEFAULT_HOLDER_ISSUER);
|
||||||
licenseContent.setIssuer(DEFAULT_HOLDER_ISSUER);
|
licenseContent.setIssuer(DEFAULT_HOLDER_ISSUER);
|
@@ -9,12 +9,11 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>continew-starter-license-generate</artifactId>
|
<artifactId>continew-starter-license-verifier</artifactId>
|
||||||
<packaging>jar</packaging>
|
<description>ContiNew Starter License 模块 - 校验器</description>
|
||||||
<description>ContiNew Starter License生成模块</description>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- license 核心模块 -->
|
<!-- License 模块 - 核心模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>top.continew</groupId>
|
<groupId>top.continew</groupId>
|
||||||
<artifactId>continew-starter-license-core</artifactId>
|
<artifactId>continew-starter-license-core</artifactId>
|
@@ -26,7 +26,7 @@ import org.springframework.context.annotation.DependsOn;
|
|||||||
|
|
||||||
import de.schlichtherle.license.LicenseManager;
|
import de.schlichtherle.license.LicenseManager;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import top.continew.license.Initializing.LicenseStarterInitializingBean;
|
import top.continew.license.initializing.LicenseStarterInitializingBean;
|
||||||
import top.continew.license.bean.LicenseInstallerBean;
|
import top.continew.license.bean.LicenseInstallerBean;
|
||||||
import top.continew.license.manager.CustomLicenseManager;
|
import top.continew.license.manager.CustomLicenseManager;
|
||||||
import top.continew.starter.core.constant.PropertiesConstants;
|
import top.continew.starter.core.constant.PropertiesConstants;
|
||||||
@@ -39,7 +39,7 @@ import top.continew.starter.core.constant.PropertiesConstants;
|
|||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
@EnableConfigurationProperties(LicenseVerifyProperties.class)
|
@EnableConfigurationProperties(LicenseVerifyProperties.class)
|
||||||
@ConditionalOnProperty(prefix = PropertiesConstants.LICENSE_VERIFY, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true)
|
@ConditionalOnProperty(prefix = PropertiesConstants.LICENSE_VERIFIER, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true)
|
||||||
public class LicenseVerifyAutoConfiguration {
|
public class LicenseVerifyAutoConfiguration {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(LicenseVerifyAutoConfiguration.class);
|
private static final Logger log = LoggerFactory.getLogger(LicenseVerifyAutoConfiguration.class);
|
||||||
@@ -80,7 +80,7 @@ public class LicenseVerifyAutoConfiguration {
|
|||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void postConstruct() {
|
public void postConstruct() {
|
||||||
log.debug("[ContiNew Starter] - Auto Configuration 'License-Verify' completed initialization.");
|
log.debug("[ContiNew Starter] - Auto Configuration 'License-Verifier' completed initialization.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@@ -26,8 +26,8 @@ import top.continew.starter.core.constant.PropertiesConstants;
|
|||||||
*
|
*
|
||||||
* @author loach
|
* @author loach
|
||||||
* @since 2.11.0
|
* @since 2.11.0
|
||||||
**/
|
*/
|
||||||
@ConfigurationProperties(PropertiesConstants.LICENSE_VERIFY)
|
@ConfigurationProperties(PropertiesConstants.LICENSE_VERIFIER)
|
||||||
public class LicenseVerifyProperties {
|
public class LicenseVerifyProperties {
|
||||||
|
|
||||||
/**
|
/**
|
@@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package top.continew.license.Initializing;
|
package top.continew.license.initializing;
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import top.continew.license.bean.LicenseInstallerBean;
|
import top.continew.license.bean.LicenseInstallerBean;
|
@@ -1,22 +0,0 @@
|
|||||||
## continew-starter-license-verify 食用方法
|
|
||||||
|
|
||||||
1. 引入依赖
|
|
||||||
|
|
||||||
```java
|
|
||||||
<dependency>
|
|
||||||
<groupId>top.continew</groupId>
|
|
||||||
<artifactId>continew-starter-license-verify</artifactId>
|
|
||||||
<version>2.11.0-SNAPSHOT</version>
|
|
||||||
</dependency>
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 配置YML(license 压缩包存放位置)
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
continew-starter:
|
|
||||||
license:
|
|
||||||
verify:
|
|
||||||
storePath: D:/license
|
|
||||||
```
|
|
||||||
|
|
||||||
注:默认加载 `FileUtil.getTmpDirPath()` 位置。
|
|
@@ -12,9 +12,10 @@
|
|||||||
<artifactId>continew-starter-license</artifactId>
|
<artifactId>continew-starter-license</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<description>ContiNew Starter License模块</description>
|
<description>ContiNew Starter License模块</description>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>continew-starter-license-core</module>
|
<module>continew-starter-license-core</module>
|
||||||
<module>continew-starter-license-generate</module>
|
<module>continew-starter-license-generator</module>
|
||||||
<module>continew-starter-license-verify</module>
|
<module>continew-starter-license-verifier</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
@@ -21,7 +21,7 @@ package top.continew.starter.storage.model.req;
|
|||||||
*
|
*
|
||||||
* @author echo
|
* @author echo
|
||||||
* @date 2024/11/04 15:13
|
* @date 2024/11/04 15:13
|
||||||
**/
|
*/
|
||||||
public class StorageProperties {
|
public class StorageProperties {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
<artifactId>spring-boot-starter-undertow</artifactId>
|
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Graceful Response(一个Spring Boot技术栈下的优雅响应处理组件,可以帮助开发者完成响应数据封装、异常处理、错误码填充等过程,提高开发效率,提高代码质量) -->
|
<!-- Graceful Response(Spring Boot技术栈下的优雅响应处理组件,可以帮助开发者完成响应数据封装、异常处理、错误码填充等过程,提高开发效率,提高代码质量) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.feiniaojin</groupId>
|
<groupId>com.feiniaojin</groupId>
|
||||||
<artifactId>graceful-response</artifactId>
|
<artifactId>graceful-response</artifactId>
|
||||||
|
14
pom.xml
14
pom.xml
@@ -38,20 +38,20 @@
|
|||||||
<module>continew-starter-json</module>
|
<module>continew-starter-json</module>
|
||||||
<module>continew-starter-api-doc</module>
|
<module>continew-starter-api-doc</module>
|
||||||
<module>continew-starter-web</module>
|
<module>continew-starter-web</module>
|
||||||
|
<module>continew-starter-auth</module>
|
||||||
|
<module>continew-starter-data</module>
|
||||||
|
<module>continew-starter-cache</module>
|
||||||
<module>continew-starter-security</module>
|
<module>continew-starter-security</module>
|
||||||
<module>continew-starter-ratelimiter</module>
|
<module>continew-starter-ratelimiter</module>
|
||||||
<module>continew-starter-idempotent</module>
|
<module>continew-starter-idempotent</module>
|
||||||
<module>continew-starter-trace</module>
|
<module>continew-starter-trace</module>
|
||||||
<module>continew-starter-log</module>
|
|
||||||
<module>continew-starter-storage</module>
|
|
||||||
<module>continew-starter-file</module>
|
|
||||||
<module>continew-starter-captcha</module>
|
<module>continew-starter-captcha</module>
|
||||||
<module>continew-starter-cache</module>
|
|
||||||
<module>continew-starter-data</module>
|
|
||||||
<module>continew-starter-auth</module>
|
|
||||||
<module>continew-starter-messaging</module>
|
<module>continew-starter-messaging</module>
|
||||||
<module>continew-starter-extension</module>
|
<module>continew-starter-log</module>
|
||||||
|
<module>continew-starter-file</module>
|
||||||
|
<module>continew-starter-storage</module>
|
||||||
<module>continew-starter-license</module>
|
<module>continew-starter-license</module>
|
||||||
|
<module>continew-starter-extension</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
Reference in New Issue
Block a user