This is an automated email from the ASF dual-hosted git repository.

popduke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bifromq.git


The following commit(s) were added to refs/heads/main by this push:
     new d1bbba5cd Fix RC1 issues (#208)
d1bbba5cd is described below

commit d1bbba5cd8163fae0593733491860dccff77cff6
Author: Yonny(Yu) Hao <[email protected]>
AuthorDate: Wed Dec 17 18:19:35 2025 +0800

    Fix RC1 issues (#208)
    
    * Correct license & notice files content
    * Add missing license header
    * Exclude unnecessary files from src tarball
    * Fix path issue in .sha512 files
    * Support RAT check directly
    * Improve test execution stability and instructions in README
---
 LICENSE                                            | 49 +-----------
 LICENSE-Binary                                     | 27 ++-----
 NOTICE                                             | 24 +-----
 NOTICE-Binary                                      | 29 ++-----
 README.md                                          | 37 +++++++--
 .../org.apache.bifromq.baseenv.IEnvProvider        | 29 ++++---
 .../org.apache.bifromq.basehookloader.ITestHookAPI | 29 ++++---
 ...ifromq.basekv.localengine.spi.IKVEngineProvider | 16 ++++
 .../rocksdb/RocksDBKVSpaceEpochHandle.java         |  5 ++
 ...ifromq.basekv.localengine.spi.IKVEngineProvider | 16 ++++
 ...v.store.range.hinter.IKVRangeSplitHinterFactory | 16 ++++
 .../basekv/store/range/KVRangeDumpSessionTest.java |  6 +-
 base-rpc/base-rpc-grpc-inproc/README.md            | 21 +++++
 bifromq-apiserver/pom.xml                          |  4 +-
 ...v.store.range.hinter.IKVRangeSplitHinterFactory | 16 ++++
 ...romq.dist.worker.spi.IDistWorkerBalancerFactory | 27 +++----
 .../bifromq/inbox/server/TenantGCRunner.java       |  3 +-
 ...romq.inbox.store.spi.IInboxStoreBalancerFactory | 27 +++----
 .../main/resources/archetype-resources/README.md   | 21 +++++
 ...mq.retain.store.spi.IRetainStoreBalancerFactory | 27 +++----
 .../assembly/assembly-windows.xml                  | 14 +++-
 build/build-bifromq-starter/assembly/assembly.xml  | 14 +++-
 build/build-bifromq-starter/plugins/README.md      | 21 +++++
 licenses/edl-1.0.txt                               | 13 ----
 pom.xml                                            | 91 ++++++++++++----------
 release/checksum-artifacts.sh                      |  4 +-
 release/sign-artifacts.sh                          |  5 +-
 release/source-assembly.xml                        |  9 +++
 28 files changed, 335 insertions(+), 265 deletions(-)

diff --git a/LICENSE b/LICENSE
index c59e3b115..cda8001f8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -198,51 +198,4 @@
    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.
-
--------------------------------------------------------------------------------
-Third-party dependencies and their licenses:
-
-Apache License, Version 2.0
-- org.awaitility:awaitility [Test Only]
-- com.fasterxml.jackson.core:jackson-databind
-- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
-- com.github.ben-manes.caffeine:caffeine
-- com.google.guava:guava
-- com.google.inject:guice
-- commons-cli:commons-cli
-- io.grpc:grpc-core
-- io.grpc:grpc-grpclb
-- io.grpc:grpc-inprocess
-- io.grpc:grpc-netty
-- io.grpc:grpc-protobuf
-- io.grpc:grpc-stub
-- io.micrometer:micrometer-core
-- io.micrometer:micrometer-registry-prometheus
-- io.netty:netty-all
-- io.reactivex.rxjava3:rxjava
-- io.swagger.core.v3:swagger-core-jakarta
-- io.swagger.core.v3:swagger-jaxrs2-jakarta
-- org.pf4j:pf4j
-- org.reflections:reflections (Apache License 2.0 / WTFPL)
-- org.rocksdb:rocksdbjni (Apache License 2.0 / GPLv2)
-- org.testng:testng [Test Only]
-
-BSD-3-Clause
-- com.google.protobuf:protobuf-java
-- com.google.protobuf:protobuf-java-util
-
-EPL-2.0 / GPL-2.0-with-classpath-exception
-- jakarta.ws.rs:jakarta.ws.rs-api
-- org.eclipse.paho:org.eclipse.paho.client.mqttv3 [Test Only]
-- org.eclipse.paho:org.eclipse.paho.mqttv5.client [Test Only]
-
-GPL-2.0-with-classpath-exception
-- org.openjdk.jmh:jmh-core [Test Only]
-- org.openjdk.jmh:jmh-generator-annprocess [Test Only]
-
-MIT License
-- org.mockito:mockito-core [Test Only]
-- org.pcollections:pcollections
-- org.slf4j:slf4j-api
-
+   limitations under the License.
\ No newline at end of file
diff --git a/LICENSE-Binary b/LICENSE-Binary
index 62928ea9a..e9460799c 100644
--- a/LICENSE-Binary
+++ b/LICENSE-Binary
@@ -205,15 +205,11 @@ This project's binary output bundles third-party 
dependencies and their licenses
 
 Apache License, Version 2.0
 - aopalliance:aopalliance:1.0
-- com.beust:jcommander:1.82
+- com.google.android:annotations:4.1.1.4
 - com.fasterxml.jackson.core:jackson-annotations:2.18.1
 - com.fasterxml.jackson.core:jackson-core:2.18.1
 - com.fasterxml.jackson.core:jackson-databind:2.18.1
 - com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.1
-- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.1
-- com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base:2.18.1
-- com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:2.18.1
-- 
com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.18.1
 - com.github.ben-manes.caffeine:caffeine:3.2.3
 - com.google.guava:failureaccess:1.0.2
 - com.google.guava:guava:33.2.1-jre
@@ -221,8 +217,11 @@ Apache License, Version 2.0
 - com.google.inject:guice:7.0.0
 - com.google.j2objc:j2objc-annotations:2.8
 - com.google.j2objc:j2objc-annotations:3.0.0
+- com.google.errorprone:error_prone_annotations:2.26.1
+- com.google.code.gson:gson:2.8.9
+- com.google.code.findbugs:jsr305:3.0.2
+- com.google.api.grpc:proto-google-common-protos:2.59.2
 - commons-cli:commons-cli:1.5.0
-- org.apache.commons:commons-collections4:4.4
 - io.grpc:grpc-api:1.77.0
 - io.grpc:grpc-context:1.77.0
 - io.grpc:grpc-core:1.77.0
@@ -268,32 +267,24 @@ Apache License, Version 2.0
 - io.netty:netty-transport-rxtx:4.1.127.Final
 - io.netty:netty-transport-sctp:4.1.127.Final
 - io.netty:netty-transport-udt:4.1.127.Final
+- io.netty:netty-tcnative-classes:2.0.73.Final
 - io.prometheus:simpleclient:0.16.0
 - io.prometheus:simpleclient_common:0.16.0
 - io.prometheus:simpleclient_tracer_common:0.16.0
 - io.prometheus:simpleclient_tracer_otel:0.16.0
 - io.prometheus:simpleclient_tracer_otel_agent:0.16.0
 - io.reactivex.rxjava3:rxjava:3.1.12
-- io.swagger.core.v3:swagger-annotations-jakarta:2.2.40
-- io.swagger.core.v3:swagger-core-jakarta:2.2.40
-- io.swagger.core.v3:swagger-integration-jakarta:2.2.40
-- io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.40
-- io.swagger.core.v3:swagger-models-jakarta:2.2.40
 - jakarta.inject:jakarta.inject-api:2.0.1
-- jakarta.validation:jakarta.validation-api:3.0.2
-- net.bytebuddy:byte-buddy:1.14.15
-- net.bytebuddy:byte-buddy-agent:1.14.15
-- org.apache.commons:commons-lang3:3.17.0
 - org.apache.logging.log4j:log4j-api:2.24.3
 - org.apache.logging.log4j:log4j-core:2.24.3
 - org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3
 - org.javassist:javassist:3.28.0-GA (Apache License 2.0 / LGPL 2.1 / MPL 1.1)
 - org.jspecify:jspecify:1.0.0
-- org.objenesis:objenesis:3.3
 - org.pf4j:pf4j:3.13.0
 - org.reflections:reflections:0.10.2 (Apache License 2.0 / WTFPL)
 - org.rocksdb:rocksdbjni:9.7.3 (Apache License 2.0 / GPLv2)
 - org.yaml:snakeyaml:2.3
+- io.perfmark:perfmark-api:0.27.0
 
 BSD-3-Clause (see: licenses/bsd-3-clause.txt)
 - com.google.protobuf:protobuf-java:4.30.2
@@ -311,6 +302,7 @@ MIT License (see: licenses/mit.txt)
 - org.checkerframework:checker-qual:3.42.0
 - org.codehaus.mojo:animal-sniffer-annotations:1.24
 - org.slf4j:slf4j-api:2.0.17
+- com.github.zafarkhaja:java-semver:0.10.2
 
 MIT-0 (see: licenses/mit-0.txt)
 - org.reactivestreams:reactive-streams:1.0.4
@@ -322,6 +314,3 @@ Bouncy Castle Licence (see: licenses/bouncy-castle.txt)
 
 EPL-2.0 / GPL-2.0-with-classpath-exception (see: licenses/epl-2.0.txt)
 - jakarta.ws.rs:jakarta.ws.rs-api:4.0.0
-
-Eclipse Distribution License - v 1.0 (see: licenses/edl-1.0.txt)
-- jakarta.xml.bind:jakarta.xml.bind-api:3.0.1
diff --git a/NOTICE b/NOTICE
index d2441d91f..5cf5c55f4 100644
--- a/NOTICE
+++ b/NOTICE
@@ -2,26 +2,4 @@ Apache BifroMQ (Incubating)
 Copyright 2025 The Apache Software Foundation
 
 This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Third-party components incorporated in this project:
-
-- RocksDB JNI (org.rocksdb:rocksdbjni)
-  Licensed under Apache License 2.0 / GPLv2.
-  See LICENSE file for full license texts.
-
-- Reflections (org.reflections:reflections)
-  Licensed under Apache License 2.0 / WTFPL.
-  See LICENSE file for full license texts.
-
-- Jakarta RESTful WS API (jakarta.ws.rs:jakarta.ws.rs-api)
-  Licensed under EPL-2.0 / GPL-2.0-with-classpath-exception.
-  See LICENSE file for full license texts.
-
-- Eclipse Paho MQTT Client (org.eclipse.paho.*)
-  Licensed under EPL-2.0 / GPL-2.0-with-classpath-exception.
-  See LICENSE file for full license texts.
-
-- OpenJDK JMH (org.openjdk.jmh.*)
-  Licensed under GPL-2.0-with-classpath-exception.
-  See LICENSE file for full license texts.
\ No newline at end of file
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/NOTICE-Binary b/NOTICE-Binary
index c0036ae90..4f930311f 100644
--- a/NOTICE-Binary
+++ b/NOTICE-Binary
@@ -4,30 +4,15 @@ Copyright 2025 The Apache Software Foundation
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
-This project's binary output bundles third-party components:
-
-- RocksDB JNI (org.rocksdb:rocksdbjni:9.7.3)
-  Licensed under Apache License 2.0 / GPLv2.
-  See LICENSE file for full license texts.
-
-- Reflections (org.reflections:reflections:0.10.2)
-  Licensed under Apache License 2.0 / WTFPL.
-  See LICENSE file for full license texts.
-
-- Javassist (org.javassist:javassist:3.28.0-GA)
-  Licensed under Apache License 2.0 / LGPL 2.1 / MPL 1.1.
-  See LICENSE file for full license texts.
+This project's binary output bundles third-party components with NOTICE 
obligations:
 
 - Jakarta RESTful WS API (jakarta.ws.rs:jakarta.ws.rs-api:4.0.0)
   Licensed under EPL-2.0 / GPL-2.0-with-classpath-exception.
   See LICENSE file for full license texts.
 
-- Jakarta XML Binding API (jakarta.xml.bind:jakarta.xml.bind-api:3.0.1)
-  Licensed under Eclipse Distribution License v1.0.
-  See LICENSE file for full license texts.
-
-- Bouncy Castle Libraries (org.bouncycastle:*)
-  Licensed under Bouncy Castle Licence.
-  See LICENSE file for full license texts.
-
-- Other third-party components are included under licenses detailed in the 
LICENSE file.
\ No newline at end of file
+- Apache Commons CLI (commons-cli:commons-cli:1.5.0)
+- Google Guice (com.google.inject:guice:7.0.0)
+- Jackson modules 
(com.fasterxml.jackson:jackson-annotations/core/databind/dataformat-yaml:2.18.1)
+- Jakarta Inject API (jakarta.inject:jakarta.inject-api:2.0.1)
+- Apache Log4j (log4j-api/log4j-core/log4j-slf4j2-impl:2.24.3)
+- Micrometer (micrometer-commons/core/observation/registry-prometheus:1.11.12)
diff --git a/README.md b/README.md
index 7fb6ef5ce..0d625611e 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,24 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+
+-->
+
 # Apache BifroMQ (Incubating)
 
 [![GitHub 
Release](https://img.shields.io/github/release/bifromqio/bifromq?color=brightgreen&label=Release)](https://github.com/bifromqio/bifromq/releases)
@@ -143,13 +164,17 @@ The build output consists of several archive files with 
`sha512` checksum locate
     * Example classifiers: `linux-x86_64`, `linux-aarch_64`, `osx-aarch_64`, 
`osx-x86_64`, `windows-x86_64`.
 
 #### Running the tests
-
-Execute the following command in the project root folder to run all test 
cases, including unit tests and integration
-tests.
-Note: The tests may take some time to finish
-
+Prepare the test environment (compile and download dependencies without 
running tests):
+```
+./mvnw clean install -DskipTests
+```
+Run unit tests only:
+```
+./mvnw test
+```
+Generate coverage (includes unit tests and integration tests, takes longer):
 ```
-mvn test
+./mvnw test -Pbuild-coverage
 ```
 
 #### Build the Docker Image
diff --git 
a/base-env/base-env-provider/src/test/resources/META-INF/services/org.apache.bifromq.baseenv.IEnvProvider
 
b/base-env/base-env-provider/src/test/resources/META-INF/services/org.apache.bifromq.baseenv.IEnvProvider
index ec8450e48..fe75e0649 100644
--- 
a/base-env/base-env-provider/src/test/resources/META-INF/services/org.apache.bifromq.baseenv.IEnvProvider
+++ 
b/base-env/base-env-provider/src/test/resources/META-INF/services/org.apache.bifromq.baseenv.IEnvProvider
@@ -1,20 +1,17 @@
 #
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#    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.
 
-org.apache.bifromq.baseenv.TestEnvProvider
\ No newline at end of file
+org.apache.bifromq.baseenv.TestEnvProvider
diff --git 
a/base-hookloader/src/test/resources/META-INF/services/org.apache.bifromq.basehookloader.ITestHookAPI
 
b/base-hookloader/src/test/resources/META-INF/services/org.apache.bifromq.basehookloader.ITestHookAPI
index 3cc457837..5a45995c5 100644
--- 
a/base-hookloader/src/test/resources/META-INF/services/org.apache.bifromq.basehookloader.ITestHookAPI
+++ 
b/base-hookloader/src/test/resources/META-INF/services/org.apache.bifromq.basehookloader.ITestHookAPI
@@ -1,20 +1,17 @@
 #
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#    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.
 
-org.apache.bifromq.basehookloader.TestHookImpl
\ No newline at end of file
+org.apache.bifromq.basehookloader.TestHookImpl
diff --git 
a/base-kv/base-kv-local-engine-memory/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
 
b/base-kv/base-kv-local-engine-memory/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
index 2cc3573a2..499bd00ee 100644
--- 
a/base-kv/base-kv-local-engine-memory/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
+++ 
b/base-kv/base-kv-local-engine-memory/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
@@ -1 +1,17 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 org.apache.bifromq.basekv.localengine.memory.InMemKVEngineProvider
diff --git 
a/base-kv/base-kv-local-engine-rocksdb/src/main/java/org/apache/bifromq/basekv/localengine/rocksdb/RocksDBKVSpaceEpochHandle.java
 
b/base-kv/base-kv-local-engine-rocksdb/src/main/java/org/apache/bifromq/basekv/localengine/rocksdb/RocksDBKVSpaceEpochHandle.java
index c0a9afde8..71c211c87 100644
--- 
a/base-kv/base-kv-local-engine-rocksdb/src/main/java/org/apache/bifromq/basekv/localengine/rocksdb/RocksDBKVSpaceEpochHandle.java
+++ 
b/base-kv/base-kv-local-engine-rocksdb/src/main/java/org/apache/bifromq/basekv/localengine/rocksdb/RocksDBKVSpaceEpochHandle.java
@@ -100,6 +100,11 @@ abstract class RocksDBKVSpaceEpochHandle implements 
IRocksDBKVSpaceEpochHandle {
             try (AutoCloseable guard = metrics.beginClose()) {
                 metrics.close();
                 log.debug("Clean up generation[{}] of kvspace[{}]", genId, id);
+                try {
+                    db.cancelAllBackgroundWork(true);
+                } catch (Throwable e) {
+                    log.warn("Failed to cancel background work of 
generation[{}] for kvspace[{}]", genId, id, e);
+                }
                 // Close checkpoint before DB resources
                 checkpoint.close();
                 try {
diff --git 
a/base-kv/base-kv-local-engine-rocksdb/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
 
b/base-kv/base-kv-local-engine-rocksdb/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
index a2c964ff1..36cdde081 100644
--- 
a/base-kv/base-kv-local-engine-rocksdb/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
+++ 
b/base-kv/base-kv-local-engine-rocksdb/src/main/resources/META-INF/services/org.apache.bifromq.basekv.localengine.spi.IKVEngineProvider
@@ -1 +1,17 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 org.apache.bifromq.basekv.localengine.rocksdb.RocksDBKVEngineProvider
diff --git 
a/base-kv/base-kv-store-server/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
 
b/base-kv/base-kv-store-server/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
index d6e668e46..4e1edda0c 100644
--- 
a/base-kv/base-kv-store-server/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
+++ 
b/base-kv/base-kv-store-server/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
@@ -1 +1,17 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 
org.apache.bifromq.basekv.store.range.hinter.MutationKVLoadBasedSplitHinterFactory
diff --git 
a/base-kv/base-kv-store-server/src/test/java/org/apache/bifromq/basekv/store/range/KVRangeDumpSessionTest.java
 
b/base-kv/base-kv-store-server/src/test/java/org/apache/bifromq/basekv/store/range/KVRangeDumpSessionTest.java
index 8a5cbc852..6f3998782 100644
--- 
a/base-kv/base-kv-store-server/src/test/java/org/apache/bifromq/basekv/store/range/KVRangeDumpSessionTest.java
+++ 
b/base-kv/base-kv-store-server/src/test/java/org/apache/bifromq/basekv/store/range/KVRangeDumpSessionTest.java
@@ -297,8 +297,10 @@ public class KVRangeDumpSessionTest extends MockableTest {
         dumpSession.tick();
         verify(messenger, timeout(100).times(2)).send(any());
         assertTrue(dumpSession.awaitDone().toCompletableFuture().isDone());
-        verify(checkpointItr).close();
-        verify(checkpointReader).close();
+        await().untilAsserted(() -> {
+            verify(checkpointItr).close();
+            verify(checkpointReader).close();
+        });
     }
 
     @Test
diff --git a/base-rpc/base-rpc-grpc-inproc/README.md 
b/base-rpc/base-rpc-grpc-inproc/README.md
index bd4488386..09c6dbbfb 100644
--- a/base-rpc/base-rpc-grpc-inproc/README.md
+++ b/base-rpc/base-rpc-grpc-inproc/README.md
@@ -1,3 +1,24 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+
+-->
+
 You might wonder why the package is named under `io.grpc`. The reason is that 
we need to implement a special client
 channel:
 when the RPC client and server are in the same process, we use a lighter 
`InProcTransport` to improve the efficiency of
diff --git a/bifromq-apiserver/pom.xml b/bifromq-apiserver/pom.xml
index d2e87870c..b84959daf 100644
--- a/bifromq-apiserver/pom.xml
+++ b/bifromq-apiserver/pom.xml
@@ -97,10 +97,12 @@
         <dependency>
             <groupId>io.swagger.core.v3</groupId>
             <artifactId>swagger-core-jakarta</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>io.swagger.core.v3</groupId>
             <artifactId>swagger-jaxrs2-jakarta</artifactId>
+            <scope>provided</scope>
         </dependency>
         <!-- test dependencies -->
         <dependency>
@@ -175,4 +177,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>
diff --git 
a/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
 
b/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
index 42348e41d..10d435f25 100644
--- 
a/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
+++ 
b/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.basekv.store.range.hinter.IKVRangeSplitHinterFactory
@@ -1 +1,17 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 org.apache.bifromq.dist.worker.hinter.FanoutSplitHinterFactory
diff --git 
a/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.dist.worker.spi.IDistWorkerBalancerFactory
 
b/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.dist.worker.spi.IDistWorkerBalancerFactory
index 733d3e459..e6f403cfe 100644
--- 
a/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.dist.worker.spi.IDistWorkerBalancerFactory
+++ 
b/bifromq-dist/bifromq-dist-worker/src/main/resources/META-INF/services/org.apache.bifromq.dist.worker.spi.IDistWorkerBalancerFactory
@@ -1,21 +1,18 @@
 #
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#    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.
 
 org.apache.bifromq.dist.worker.balance.ReplicaCntBalancerFactory
 org.apache.bifromq.dist.worker.balance.RangeLeaderBalancerFactory
diff --git 
a/bifromq-inbox/bifromq-inbox-server/src/main/java/org/apache/bifromq/inbox/server/TenantGCRunner.java
 
b/bifromq-inbox/bifromq-inbox-server/src/main/java/org/apache/bifromq/inbox/server/TenantGCRunner.java
index ccc8c11c0..672957520 100644
--- 
a/bifromq-inbox/bifromq-inbox-server/src/main/java/org/apache/bifromq/inbox/server/TenantGCRunner.java
+++ 
b/bifromq-inbox/bifromq-inbox-server/src/main/java/org/apache/bifromq/inbox/server/TenantGCRunner.java
@@ -24,11 +24,11 @@ import static 
org.apache.bifromq.basekv.client.KVRangeRouterUtil.findByBoundary;
 import static org.apache.bifromq.basekv.utils.BoundaryUtil.toBoundary;
 import static org.apache.bifromq.basekv.utils.BoundaryUtil.upperBound;
 import static 
org.apache.bifromq.inbox.store.schema.KVSchemaUtil.tenantBeginKeyPrefix;
-import static org.reflections.Reflections.log;
 
 import com.google.protobuf.ByteString;
 import java.util.Collection;
 import java.util.concurrent.CompletableFuture;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.bifromq.basekv.client.IBaseKVStoreClient;
 import org.apache.bifromq.basekv.client.KVRangeSetting;
 import org.apache.bifromq.basekv.client.exception.BadRequestException;
@@ -44,6 +44,7 @@ import 
org.apache.bifromq.inbox.storage.proto.ExpireTenantReply;
 import org.apache.bifromq.inbox.storage.proto.ExpireTenantRequest;
 import org.apache.bifromq.inbox.storage.proto.InboxServiceROCoProcInput;
 
+@Slf4j
 public class TenantGCRunner implements ITenantGCRunner {
     private final IBaseKVStoreClient storeClient;
 
diff --git 
a/bifromq-inbox/bifromq-inbox-store/src/main/resources/META-INF/services/org.apache.bifromq.inbox.store.spi.IInboxStoreBalancerFactory
 
b/bifromq-inbox/bifromq-inbox-store/src/main/resources/META-INF/services/org.apache.bifromq.inbox.store.spi.IInboxStoreBalancerFactory
index d00579fc3..9b2b998ad 100644
--- 
a/bifromq-inbox/bifromq-inbox-store/src/main/resources/META-INF/services/org.apache.bifromq.inbox.store.spi.IInboxStoreBalancerFactory
+++ 
b/bifromq-inbox/bifromq-inbox-store/src/main/resources/META-INF/services/org.apache.bifromq.inbox.store.spi.IInboxStoreBalancerFactory
@@ -1,21 +1,18 @@
 #
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#    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.
 
 org.apache.bifromq.inbox.store.balance.ReplicaCntBalancerFactory
 org.apache.bifromq.inbox.store.balance.RangeSplitBalancerFactory
diff --git 
a/bifromq-plugin/bifromq-plugin-archetype/src/main/resources/archetype-resources/README.md
 
b/bifromq-plugin/bifromq-plugin-archetype/src/main/resources/archetype-resources/README.md
index d5cbfc1d1..8b0030223 100644
--- 
a/bifromq-plugin/bifromq-plugin-archetype/src/main/resources/archetype-resources/README.md
+++ 
b/bifromq-plugin/bifromq-plugin-archetype/src/main/resources/archetype-resources/README.md
@@ -1,3 +1,24 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+
+-->
+
 # BifroMQ Plugin Archetype
 
 This Maven Archetype helps you quickly bootstrap a new BifroMQ plugin project 
with a pre-configured project structure and necessary dependencies.
diff --git 
a/bifromq-retain/bifromq-retain-store/src/main/resources/META-INF/services/org.apache.bifromq.retain.store.spi.IRetainStoreBalancerFactory
 
b/bifromq-retain/bifromq-retain-store/src/main/resources/META-INF/services/org.apache.bifromq.retain.store.spi.IRetainStoreBalancerFactory
index 9e501a9dc..414907387 100644
--- 
a/bifromq-retain/bifromq-retain-store/src/main/resources/META-INF/services/org.apache.bifromq.retain.store.spi.IRetainStoreBalancerFactory
+++ 
b/bifromq-retain/bifromq-retain-store/src/main/resources/META-INF/services/org.apache.bifromq.retain.store.spi.IRetainStoreBalancerFactory
@@ -1,21 +1,18 @@
 #
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#    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.
 
 # DO NOT enable recovery balancer if range split balancer is enabled
 org.apache.bifromq.retain.store.balance.ReplicaCntBalancerFactory
diff --git a/build/build-bifromq-starter/assembly/assembly-windows.xml 
b/build/build-bifromq-starter/assembly/assembly-windows.xml
index 56ccb94f2..a406991b1 100644
--- a/build/build-bifromq-starter/assembly/assembly-windows.xml
+++ b/build/build-bifromq-starter/assembly/assembly-windows.xml
@@ -28,6 +28,16 @@
             
<source>../build-plugin-demo/target/pluginDir/demo-plugin-${project.parent.version}.jar</source>
             <outputDirectory>plugins</outputDirectory>
         </file>
+        <file>
+            <source>${project.basedir}/../../LICENSE-Binary</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE</destName>
+        </file>
+        <file>
+            <source>${project.basedir}/../../NOTICE-Binary</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE</destName>
+        </file>
     </files>
     <fileSets>
         <fileSet>
@@ -49,10 +59,6 @@
             <directory>${project.basedir}/../../</directory>
             <includes>
                 <include>licenses/**</include>
-                <include>LICENSE</include>
-                <include>LICENSE-Binary</include>
-                <include>NOTICE</include>
-                <include>NOTICE-Binary</include>
                 <include>DISCLAIMER</include>
             </includes>
             <outputDirectory>/</outputDirectory>
diff --git a/build/build-bifromq-starter/assembly/assembly.xml 
b/build/build-bifromq-starter/assembly/assembly.xml
index b4e00a106..582587314 100644
--- a/build/build-bifromq-starter/assembly/assembly.xml
+++ b/build/build-bifromq-starter/assembly/assembly.xml
@@ -28,6 +28,16 @@
             
<source>../build-plugin-demo/target/pluginDir/demo-plugin-${project.parent.version}.jar</source>
             <outputDirectory>plugins</outputDirectory>
         </file>
+        <file>
+            <source>${project.basedir}/../../LICENSE-Binary</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE</destName>
+        </file>
+        <file>
+            <source>${project.basedir}/../../NOTICE-Binary</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE</destName>
+        </file>
     </files>
     <fileSets>
         <fileSet>
@@ -49,10 +59,6 @@
             <directory>${project.basedir}/../../</directory>
             <includes>
                 <include>licenses/**</include>
-                <include>LICENSE</include>
-                <include>LICENSE-Binary</include>
-                <include>NOTICE</include>
-                <include>NOTICE-Binary</include>
                 <include>DISCLAIMER</include>
             </includes>
             <outputDirectory>/</outputDirectory>
diff --git a/build/build-bifromq-starter/plugins/README.md 
b/build/build-bifromq-starter/plugins/README.md
index fcf794677..b21a6cc60 100644
--- a/build/build-bifromq-starter/plugins/README.md
+++ b/build/build-bifromq-starter/plugins/README.md
@@ -1 +1,22 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+
+-->
+
 # This folder contains 3rd-party pf4j-compatible plugin implementation
\ No newline at end of file
diff --git a/licenses/edl-1.0.txt b/licenses/edl-1.0.txt
deleted file mode 100644
index 3930ba656..000000000
--- a/licenses/edl-1.0.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Eclipse Distribution License - v 1.0
-
-Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this 
list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, 
this list of conditions and the following disclaimer in the documentation 
and/or other materials provided with the distribution.
-* Neither the name of the Eclipse Foundation, Inc. nor the names of its 
contributors may be used to endorse or promote products derived from this 
software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
LOSS OF USE, DATA, OR PROFI [...]
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4cf9bb659..1e7f7820d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -742,10 +742,9 @@
             </dependency>
             <dependency>
                 <groupId>org.mockito</groupId>
-                <artifactId>mockito-bom</artifactId>
-                <type>pom</type>
+                <artifactId>mockito-core</artifactId>
                 <version>${mockito.version}</version>
-                <scope>import</scope>
+                <scope>test</scope>
             </dependency>
             <dependency>
                 <groupId>org.testng</groupId>
@@ -939,6 +938,11 @@
                         <excludes>
                             <exclude>**/benchmark/**</exclude>
                         </excludes>
+                        <suiteXmlFiles>
+                            <suiteXmlFile>
+                                
${maven.multiModuleProjectDirectory}/testsuites/UnitTests.xml
+                            </suiteXmlFile>
+                        </suiteXmlFiles>
                         <additionalClasspathDependencies>
                             <dependency>
                                 <groupId>org.apache.bifromq</groupId>
@@ -1069,6 +1073,48 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>.github/**</exclude>
+                        <exclude>.gitignore</exclude>
+                        <exclude>.gitattributes</exclude>
+                        <exclude>**/target/**</exclude>
+                        <exclude>**/.idea/**</exclude>
+                        <exclude>**/*.iml</exclude>
+                        <exclude>**/.run/**</exclude>
+                        <exclude>**/.mvn/**</exclude>
+                        <exclude>**/.tmp/**</exclude>
+                        <exclude>**/.git/**</exclude>
+                        <exclude>**/.DS_Store</exclude>
+                        <exclude>lombok.config</exclude>
+                        <exclude>META-INF/services/**</exclude>
+                        <exclude>**/META-INF/services/**</exclude>
+                        <exclude>**/*.crt</exclude>
+                        <exclude>**/*.pem</exclude>
+                        <exclude>**/MANIFEST.MF</exclude>
+                        <exclude>licenses/*.txt</exclude>
+                        <exclude>DISCLAIMER</exclude>
+                        <exclude>LICENSE</exclude>
+                        <exclude>LICENSE-Binary</exclude>
+                        <exclude>NOTICE</exclude>
+                        <exclude>NOTICE-Binary</exclude>
+                    </excludes>
+                    <excludeSubProjects>false</excludeSubProjects>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>rat-check</id>
+                        <inherited>false</inherited>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
@@ -1187,45 +1233,6 @@
                     <plugin>
                         <groupId>org.apache.rat</groupId>
                         <artifactId>apache-rat-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>rat-check</id>
-                                <inherited>false</inherited>
-                                <phase>verify</phase>
-                                <goals>
-                                    <goal>check</goal>
-                                </goals>
-                                <configuration>
-                                    <excludes>
-                                        <exclude>.github/**</exclude>
-                                        <exclude>.gitignore</exclude>
-                                        <exclude>.gitattributes</exclude>
-                                        <exclude>**/target/**</exclude>
-                                        <exclude>**/.idea/**</exclude>
-                                        <exclude>**/*.iml</exclude>
-                                        <exclude>**/.run/**</exclude>
-                                        <exclude>**/.mvn/**</exclude>
-                                        <exclude>**/.tmp/**</exclude>
-                                        <exclude>**/.git/**</exclude>
-                                        <exclude>**/.DS_Store</exclude>
-                                        <exclude>lombok.config</exclude>
-                                        <exclude>META-INF/**</exclude>
-                                        <exclude>**/META-INF/**</exclude>
-                                        
<exclude>**/resources/META-INF/**</exclude>
-                                        <exclude>**/*.crt</exclude>
-                                        <exclude>**/*.pem</exclude>
-                                        <exclude>**/MANIFEST.MF</exclude>
-                                        <exclude>**/*.md</exclude>
-                                        <exclude>licenses/*.txt</exclude>
-                                        <exclude>DISCLAIMER</exclude>
-                                        <exclude>LICENSE</exclude>
-                                        <exclude>LICENSE-Binary</exclude>
-                                        <exclude>NOTICE</exclude>
-                                        <exclude>NOTICE-Binary</exclude>
-                                    </excludes>
-                                </configuration>
-                            </execution>
-                        </executions>
                     </plugin>
                 </plugins>
             </build>
diff --git a/release/checksum-artifacts.sh b/release/checksum-artifacts.sh
index 7262dfff3..66ba8262f 100644
--- a/release/checksum-artifacts.sh
+++ b/release/checksum-artifacts.sh
@@ -22,8 +22,10 @@ set -euo pipefail
 
 out_dir="${1:?output dir required}"
 
+cd "$out_dir"
+
 shopt -s nullglob
-files=("${out_dir}"/*.tar.gz "${out_dir}"/*.zip)
+files=(*.tar.gz *.zip)
 shopt -u nullglob
 
 if [[ ${#files[@]} -eq 0 ]]; then
diff --git a/release/sign-artifacts.sh b/release/sign-artifacts.sh
index 7291d0001..a5ccfaf2b 100755
--- a/release/sign-artifacts.sh
+++ b/release/sign-artifacts.sh
@@ -24,8 +24,10 @@ set -euo pipefail
 
 out_dir="${1:?output dir required}"
 
+cd "$out_dir"
+
 shopt -s nullglob
-files=("${out_dir}"/*.tar.gz "${out_dir}"/*.zip)
+files=(*.tar.gz *.zip)
 shopt -u nullglob
 
 if [[ ${#files[@]} -eq 0 ]]; then
@@ -35,5 +37,4 @@ fi
 
 for f in "${files[@]}"; do
   gpg --armor --detach-sign "$f"
-  shasum -a 512 "$f" > "${f}.sha512"
 done
diff --git a/release/source-assembly.xml b/release/source-assembly.xml
index 7b2d82906..4326bef33 100644
--- a/release/source-assembly.xml
+++ b/release/source-assembly.xml
@@ -57,6 +57,15 @@
                 <exclude>.DS_Store</exclude>
                 <exclude>**/.DS_Store</exclude>
                 <exclude>Thumbs.db</exclude>
+
+                <exclude>.mvn/wrapper/maven-wrapper.jar</exclude>
+                <exclude>release/plugin-release.sh</exclude>
+                <exclude>release/sign-artifacts.sh</exclude>
+                <exclude>release/release.sh</exclude>
+                <exclude>.asf.yaml</exclude>
+                <exclude>.gitattributes</exclude>
+                <exclude>.gitignore</exclude>
+                <exclude>.licenserc.yaml</exclude>
             </excludes>
         </fileSet>
     </fileSets>

Reply via email to