<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 1999-2018 Alibaba Group Holding Ltd.
  ~
  ~ 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.
  -->
<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>io.github.pig-mesh.nacos</groupId>
        <artifactId>nacos-all</artifactId>
        <version>3.1.0-bugfix</version>
    </parent>
    <artifactId>nacos-console</artifactId>
    <packaging>jar</packaging>
    <name>nacos-console ${project.version}</name>
    <url>https://nacos.io</url>
    
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-naming</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.pig-mesh.nacos</groupId>
            <artifactId>nacos-ai</artifactId>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-lock</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.pig-mesh.nacos</groupId>
            <artifactId>nacos-maintainer-client</artifactId>
        </dependency>
        
        <dependency>
            <groupId>io.github.pig-mesh.nacos</groupId>
            <artifactId>nacos-default-plugin-all</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-istio</artifactId>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-prometheus</artifactId>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>nacos-k8s-sync</artifactId>
        </dependency>
        
        <dependency>
            <groupId>io.modelcontextprotocol.sdk</groupId>
            <artifactId>mcp</artifactId>
        </dependency>
        
        <!-- log -->
        <!-- log4j通过slf4j来代理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </dependency>
        <!-- apache commons logging通过slf4j来代理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </dependency>
        <!-- java.util.logging 通过slf4j来代理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test-autoconfigure</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
                <version>${native-maven-plugin.version}</version>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>META-INF/**</include>
                    <include>static/**</include>
                    <include>nacos-console.properties</include>
                    <include>nacos-console-banner.txt</include>
                    <include>org/apache/derby/modules.properties</include>
                    <include>librocksdbjni-${hints.os.rocksdb}</include>
                </includes>
                <excludes>
                    <exclude>static/console-ui/.vscode/**</exclude>
                </excludes>
            </resource>
        </resources>
    </build>
    
    <reporting>
        <plugins>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
    
    <profiles>
        <profile>
            <id>native-win64</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>win64.dll</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-linux32</id>
            <activation>
                <os>
                    <family>unix</family>
                    <name>Linux</name>
                    <arch>x86</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>linux32.so</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-linux64</id>
            <activation>
                <os>
                    <family>unix</family>
                    <name>Linux</name>
                    <arch>x64</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>linux64.so</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-linux-aarch64</id>
            <activation>
                <os>
                    <family>unix</family>
                    <name>Linux</name>
                    <arch>aarch64</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>linux-aarch64.so</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-linux-ppc64le</id>
            <activation>
                <os>
                    <family>unix</family>
                    <name>Linux</name>
                    <arch>aarch64</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>linux-ppc64le.so</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-linux-s390x</id>
            <activation>
                <os>
                    <family>unix</family>
                    <name>Linux</name>
                    <arch>s390x</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>linux-s390x.so</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-osx-arm64</id>
            <activation>
                <os>
                    <family>mac</family>
                    <arch>arm64</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>osx-arm64.jnilib</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native-osx-x86_64</id>
            <activation>
                <os>
                    <family>mac</family>
                    <arch>x86_64</arch>
                </os>
            </activation>
            <properties>
                <hints.os.rocksdb>osx-x86_64.jnilib</hints.os.rocksdb>
            </properties>
        </profile>
        <profile>
            <id>native</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <configuration>
                            <jvmArguments>
                                -agentlib:native-image-agent=config-merge-dir=src/main/resources/META-INF/native-image/com.alibaba.nacos/nacos-console/
                            </jvmArguments>
                            <image>
                                <builder>paketobuildpacks/builder:tiny</builder>
                                <env>
                                    <BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
                                </env>
                            </image>
                        </configuration>
                        <executions>
                            <execution>
                                <id>process-aot</id>
                                <goals>
                                    <goal>process-aot</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.graalvm.buildtools</groupId>
                        <artifactId>native-maven-plugin</artifactId>
                        <configuration>
                            <imageName>nacos-server</imageName>
                            <buildArgs>
                                --add-opens java.base/java.lang=ALL-UNNAMED
                                --enable-url-protocols=http
                                --enable-preview
                                --no-fallback
                                <!-- Resource Hints -->
                                -H:IncludeResources='librocksdbjni-${hints.os.rocksdb}'
                                -H:IncludeResources='.*libnetty_transport_native_epoll_.*\.so'
                                <!-- Runtime Hints -->
                                --initialize-at-run-time=com.google.common.util.concurrent.AbstractFuture$Waiter
                                --initialize-at-run-time=com.google.common.util.concurrent.AbstractFuture$Listener
                                --initialize-at-run-time=com.google.protobuf.Any
                                --initialize-at-run-time=com.google.protobuf.Any$Builder
                                
                                --initialize-at-run-time=io.grpc.internal.ServerCallImpl
                                --initialize-at-run-time=io.grpc.ForwardingServerCall
                                --initialize-at-run-time=io.grpc.ForwardingServerCall$SimpleForwardingServerCall
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.WriteQueue
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyClientStream
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyServerStream
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyServerProvider
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyClientStream
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.WriteBufferingAndExceptionHandler
                                --initialize-at-run-time=io.grpc.netty.shaded.io.grpc.netty.NettyConnection
                                --initialize-at-run-time=io.grpc.internal.ManagedChannelImpl
                                --initialize-at-run-time=io.grpc.internal.ManagedChannelImpl$RealChannel
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.channel.socket.nio.NioSocketChannel
                                --initialize-at-run-time=io.grpc.ServerCall
                                --initialize-at-run-time=io.grpc.stub.ClientCalls
                                --initialize-at-run-time=io.grpc.stub.ClientCalls$UnaryStreamToFuture
                                --initialize-at-run-time=io.grpc.stub.ServerCalls
                                --initialize-at-run-time=io.grpc.stub.ServerCalls$NoopStreamObserver
                                --initialize-at-run-time=io.grpc.stub.ServerCalls$ServerCallStreamObserverImpl
                                --initialize-at-run-time=io.grpc.stub.ServerCalls$StreamingServerCallHandler
                                --initialize-at-run-time=io.grpc.stub.ServerCallStreamObserver
                                --initialize-at-run-time=io.grpc.stub.CallStreamObserver
                                --initialize-at-run-time=io.grpc.stub.StreamObserver
                                --initialize-at-run-time=io.grpc.protobuf.lite.ProtoInputStream
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.Unpooled
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PoolArena
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PooledByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.ByteBufAllocator
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PooledSlicedByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.UnpooledHeapByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PoolArena$DirectArena
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.UnpooledDirectByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.AbstractByteBufAllocator
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.UnpooledByteBufAllocator
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.PooledUnsafeDirectByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.UnpooledUnsafeDirectByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.AbstractPooledDerivedByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.AbstractReferenceCountedByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.util.AbstractReferenceCounted
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.codec.base64.Base64
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.codec.http.HttpObjectAggregator
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.SslUtils
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.PemValue
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.PemPrivateKey
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.JdkSslContext
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.PemX509Certificate
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.JdkSslContext$Defaults
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.OpenSslPrivateKeyMethod
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.BouncyCastleAlpnSslUtils
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.OpenSslAsyncPrivateKeyMethod
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.ReferenceCountedOpenSslEngine
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.handler.ssl.ReferenceCountedOpenSslContext
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.internal.tcnative.SSL
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.internal.tcnative.CertificateVerifier
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.internal.tcnative.SSLPrivateKeyMethod
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod
                                --initialize-at-run-time=io.grpc.netty.shaded.io.netty.internal.tcnative.CertificateCompressionAlgo
                                
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.WriteRequest
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.WriteRequest$Builder
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.ReadRequest
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.ReadRequest$Builder
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.Response
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.Response$Builder
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.GetRequest
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.GetRequest$Builder
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.Log
                                --initialize-at-run-time=com.alibaba.nacos.consistency.entity.Log$Builder
                                
                                --initialize-at-run-time=com.alipay.sofa.jraft.entity.LocalFileMetaOutter$LocalFileMeta
                                --initialize-at-run-time=com.alipay.sofa.jraft.rpc.ProtobufMsgFactory
                                
                                --initialize-at-run-time=org.apache.derby.jdbc.AutoloadedDriver
                                --initialize-at-run-time=org.apache.derby.jdbc.InternalDriver
                                --initialize-at-run-time=org.apache.derby.jdbc.Driver42
                                --initialize-at-run-time=org.apache.derby.jdbc.EmbeddedDriver
                                --initialize-at-run-time=org.apache.derby.jdbc.ResourceAdapterImpl
                                --initialize-at-run-time=org.apache.derby.iapi.jdbc.DRDAServerStarter
                                --initialize-at-run-time=org.apache.derby.iapi.jdbc.JDBCBoot
                                --initialize-at-run-time=org.apache.derby.iapi.services.SecurityUtil
                                --initialize-at-run-time=org.apache.derby.iapi.services.monitor.Monitor
                                --initialize-at-run-time=org.apache.derby.impl.services.monitor.ModuleInstance
                                --initialize-at-run-time=org.apache.derby.impl.services.monitor.ProtocolKey
                                --initialize-at-run-time=org.apache.derby.impl.services.monitor.BaseMonitor
                                --initialize-at-run-time=org.apache.derby.impl.services.monitor.TopService
                                --initialize-at-run-time=org.apache.derby.iapi.services.cache.ClassSizeCatalogImpl

                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.metadata.InstanceMetadata
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.pojo.HealthCheckInstancePublishInfo
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.pojo.BatchInstancePublishInfo
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.pojo.BatchInstanceData
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.pojo.InstancePublishInfo
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.pojo.Service
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.service.impl.PersistentClientOperationServiceImpl
                                --initialize-at-run-time=com.alibaba.nacos.naming.core.v2.service.impl.PersistentClientOperationServiceImpl$InstanceStoreRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.pojo.Instance
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.AbstractNamingRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.Metadata
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.Metadata.Builder
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.Payload
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.Payload.Builder
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.BiRequestStreamGrpc
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.BiRequestStreamGrpc.BiRequestStreamBlockingStub
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.BiRequestStreamGrpc.BiRequestStreamFutureStub
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.BiRequestStreamGrpc.BiRequestStreamImplBase
                                --initialize-at-run-time=com.alibaba.nacos.api.grpc.auto.BiRequestStreamGrpc.BiRequestStreamStub
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.InstanceRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.PersistentInstanceRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigQueryRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ClientConfigMetricRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigChangeNotifyRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigPublishRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigRemoveRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.cluster.ConfigChangeClusterSyncRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ClientConfigMetricResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ConfigChangeBatchListenResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ConfigChangeNotifyResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ConfigPublishResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ConfigQueryResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.ConfigRemoveResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.response.cluster.ConfigChangeClusterSyncResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.BatchInstanceRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.NotifySubscriberRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.ServiceListRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.ServiceQueryRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.request.SubscribeServiceRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.BatchInstanceResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.InstanceResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.NotifySubscriberResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.QueryServiceResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.ServiceListResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.naming.remote.response.SubscribeServiceResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ClientDetectionRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ConnectionSetupRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ConnectResetRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.HealthCheckRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.PushAckRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ServerCheckRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ServerLoaderInfoRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.ServerReloadRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.request.SetupAckRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ClientDetectionResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ConnectResetResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ErrorResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.HealthCheckResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ServerCheckResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ServerLoaderInfoResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.ServerReloadResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.remote.response.SetupAckResponse
                                --initialize-at-run-time=com.alibaba.nacos.core.distributed.raft.NacosClosure
                                --initialize-at-run-time=com.alibaba.nacos.core.monitor.GrpcServerThreadPoolMonitor
                                --initialize-at-run-time=com.alibaba.nacos.core.remote.grpc.BaseGrpcServer
                                --initialize-at-run-time=com.alibaba.nacos.core.remote.BaseRpcServer
                                --initialize-at-run-time=com.alibaba.nacos.core.remote.grpc.GrpcBiStreamRequestAcceptor
                                --initialize-at-run-time=com.alibaba.nacos.core.remote.grpc.GrpcClusterServer
                                --initialize-at-run-time=com.alibaba.nacos.core.remote.grpc.GrpcSdkServer
                                --initialize-at-run-time=com.alibaba.nacos.core.cluster.remote.request.MemberReportRequest
                                --initialize-at-run-time=com.alibaba.nacos.core.cluster.remote.response.MemberReportResponse
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest
                                --initialize-at-run-time=com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest$ConfigListenContext
                                --initialize-at-run-time=com.alibaba.nacos.naming.cluster.remote.request.DistroDataRequest
                                --initialize-at-run-time=com.alibaba.nacos.naming.cluster.remote.response.DistroDataResponse
                                
                                --initialize-at-run-time=com.alibaba.nacos.plugin.auth.impl.jwt.NacosJwtPayload
                                <!-- Build-time Hints -->
                                --initialize-at-build-time=org.slf4j.LoggerFactory
                                --initialize-at-build-time=ch.qos.logback.core.util.Loader
                                --initialize-at-build-time=ch.qos.logback.core.status.InfoStatus
                                --initialize-at-build-time=ch.qos.logback.classic.Logger
                                --initialize-at-build-time=ch.qos.logback.core.util.StatusPrinter
                                --initialize-at-build-time=ch.qos.logback.core.CoreConstants
                                --initialize-at-build-time=ch.qos.logback.classic.Level
                                --initialize-at-build-time=ch.qos.logback.core.status.StatusBase
                                --initialize-at-build-time=ch.qos.logback.core.util.StatusPrinter2
                            </buildArgs>
                        </configuration>
                        <executions>
                            <execution>
                                <id>build-native</id>
                                <goals>
                                    <goal>compile-no-fork</goal>
                                </goals>
                                <phase>package</phase>
                            </execution>
                            <execution>
                                <id>add-reachability-metadata</id>
                                <goals>
                                    <goal>add-reachability-metadata</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
