hiapi-fast-frame
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-fast-frame</artifactId>
<version>1.0.8</version>
</dependency><?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-fast-frame</artifactId>
<version>1.0.8</version>
<packaging>pom</packaging>
<!--
以下 name / description / url / licenses / developers / scm 是
Maven Central 的**强制**元数据,缺一项就会在校验阶段被拒收。
发阿里云私仓时它们只是描述信息,不影响构建。
-->
<name>hiapi-fast-frame</name>
<description>HiAPI 快速开发框架:基于 Spring Boot 3 / Spring Cloud 的多租户 SaaS 微服务基础框架</description>
<url>https://hiapi.dev/org/hiapi/hiapi-fast-frame</url>
<licenses>
<license>
<name>HiAPI Commercial License</name>
<url>https://hiapi.dev/license</url>
<distribution>repo</distribution>
<comments>专有商业许可证:本构件仅供 HiAPI 及其正式授权客户在授权范围内使用,
未经书面授权不得使用、复制、修改、反编译或再分发。详见 LICENSE 文件。</comments>
</license>
</licenses>
<developers>
<developer>
<id>adinz.com</id>
<name>AdinZ</name>
<email>wyll365@gmail.com</email>
<url>https://www.adinz.com</url>
<organization>HiAPI</organization>
<organizationUrl>https://www.hiapi.dev</organizationUrl>
</developer>
</developers>
<scm>
<tag>HEAD</tag>
<url>scm:git:https://gitee.com/adinz/hiapi-fast-frame.git</url>
<connection>scm:git:https://gitee.com/adinz/hiapi-fast-frame.git</connection>
<developerConnection>scm:git:https://gitee.com/adinz/hiapi-fast-frame.git</developerConnection>
</scm>
<modules>
<module>hiapi-fast-core</module>
</modules>
<!--
原先为拉取 spring-cloud 2024.0.0-RC1 开了 spring 的 milestone / snapshot 仓库,现已移除:
已改用 GA 版本(见下方 spring-cloud.version 2024.0.0,GA 在中央/aliyun 镜像即可拉到);
snapshot 仓库全局生效会让任意传递依赖解析到滚动构件,构建不可重现且是供应链攻击面。
-->
<distributionManagement>
<repository>
<id>rdc-releases</id>
<url>https://packages.aliyun.com/maven/repository/2053148-release-Jpddz2/</url>
</repository>
<snapshotRepository>
<id>rdc-snapshots</id>
<url>https://packages.aliyun.com/maven/repository/2053148-snapshot-iAeJBl/</url>
</snapshotRepository>
</distributionManagement>
<properties>
<spring-cloud.version>2024.0.0</spring-cloud.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<fast-version>1.0.8</fast-version>
<nacos.version>2023.0.3.2</nacos.version>
<!--
测试默认**开启**。2026-07-31 之前这里是 <skipTests>true</skipTests>,
被所有服务仓继承 —— 于是谁写了测试都会被静默跳过,
这就是"全仓 1000 个 java 文件只有 8 个测试文件"的真正原因:
不是没人写,是写了也不跑。
需要外部依赖(网络/本地服务)的测试请标 @Disabled 并写清原因,
不要用全局开关关掉所有测试 —— CI 里偶发红灯会让人开始忽略红灯,
而一个永远绿的、什么都不跑的构建比红灯更危险。
-->
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.17.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.1.2-jre</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.53</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring6</artifactId>
<version>2.0.53</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.15.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>1.78.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-jdbc -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc</artifactId>
<version>5.5.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-test-util</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.20</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.25.5</version>
<scope>compile</scope>
</dependency>
<!-- fast-core -->
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-app-install</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-application</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-basic</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-basic-feign</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-captcha-basic</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-captcha-service</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-controller</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-dispatch</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-entity</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-exception</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-language</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-login</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-event-sdk</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-event-shared</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-query</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-redis</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-security</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-security-feign</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-security-basic</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-security-token</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-sender</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-sender-feign</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-service</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-sharding</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-sharding-service</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-utils</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-iot-mqtt</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-thirdparty-api</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-thirdparty-server</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-license</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-operation-log</artifactId>
<version>${fast-version}</version>
</dependency>
<!-- fast-core end -->
<!-- 业务仓(user/public/finance)自己的模块版本由各仓根 pom 管理,
不进框架 BOM —— 框架不该认识下游。
2026-07-31:原来这条注释下面就摆着 3 条业务 feign 坐标,自相矛盾;
契约归位后已删除,现在框架真的不认识任何下游了。 -->
<!-- merchant begin-->
<!-- merchant end-->
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-upload</artifactId>
<version>${fast-version}</version>
</dependency>
<dependency>
<groupId>cn.hiapi</groupId>
<artifactId>hiapi-core-upload-api</artifactId>
<version>${fast-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<!--
============================================================
发布到 Maven Central 公共仓库(给国外客户用)
============================================================
用法: mvn -Pcentral clean deploy
**不带 -Pcentral 时行为完全不变** —— 仍然走上面的
distributionManagement 发阿里云私仓,现有云效流水线不受影响。
这是刻意设计:公共发布是额外通道,不是替换。
国外客户侧零配置:Central 是 Maven 的内置默认仓库,
客户不需要在 settings.xml 里加任何 repository 或凭据。
有三处和常规开源发布不同,改之前先看懂为什么:
1) sources / javadoc 是**空包**。Central 强制要求这两个附件存在,
但本框架不开源。做法是让 maven-source-plugin 排除全部文件
(excludes **/*)再用 forceCreation 强制出包 —— 校验能过,
源码不出去。javadoc 用同一个插件换 classifier 生成,
避免真的跑 javadoc 把中文实现注释带出去。
⚠️ 别"顺手"把 excludes 删掉或换成 maven-javadoc-plugin,
那等于把框架源码公开发出去,且 Central 的构件永久不可删除。
2) hiapi-core-license(授权保护模块)通过 excludeArtifacts 排除,
不上传 Central。它仍然正常编译、正常发往阿里云私仓,
hiapi-cloud-public-app 照常依赖得到。
要再排别的模块,往 excludeArtifacts 里加 artifactId 即可。
3) GPG 签名是 Central 的硬要求。本机需先有密钥且公钥已上传
公钥服务器,凭据配在 settings.xml,详见 PUBLISH-CENTRAL.md。
-->
<profile>
<id>central</id>
<build>
<plugins>
<!-- 空的 sources / javadoc 附件:满足 Central 校验,不泄漏源码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>empty-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
<configuration>
<classifier>sources</classifier>
</configuration>
</execution>
<execution>
<id>empty-javadoc</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
<configuration>
<classifier>javadoc</classifier>
</configuration>
</execution>
</executions>
<configuration>
<!-- 排除全部源文件 + 强制出包 = 空附件,见上面第 1 条 -->
<excludes>
<exclude>**/*</exclude>
</excludes>
<forceCreation>true</forceCreation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 无交互终端(CI / 脚本)下也能用密码签名 -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<!-- 对应 settings.xml 里 <server><id>central</id> 的 Portal token -->
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<waitUntil>published</waitUntil>
<!--
不进公共仓库的模块。按 artifactId 精确匹配。
hiapi-core-license = 授权保护模块,公开等于把防护逻辑给对手看。
-->
<excludeArtifacts>
<excludeArtifact>hiapi-core-license</excludeArtifact>
</excludeArtifacts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>