操作过程
- 进入到Sentinel根目录
- 运行命令:
mvn clean package -DskipTests
报错信息
Failed to execute goal io.quarkus:quarkus-bootstrap-maven-plugin:1.4.1.Final:extension-descriptor (default) on project sentinel-annotation-quarkus-adapter:
Execution default of goal io.quarkus:quarkus-bootstrap-maven-plugin:1.4.1.Final:extension-descriptor failed: A required class was missing while executing io.quarkus
:quarkus-bootstrap-maven-plugin:1.4.1.Final:extension-descriptor: com/fasterxml/jackson/annotation/JsonView
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:169)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector. (JacksonAnnotationIntrospector.java:37)
at com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.java:350)
at io.quarkus.maven.ExtensionDescriptorMojo.getMapper (ExtensionDescriptorMojo.java:301)
at io.quarkus.maven.ExtensionDescriptorMojo.execute (ExtensionDescriptorMojo.java:170)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector. (JacksonAnnotationIntrospector.java:37)
at com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.java:350)
at io.quarkus.maven.ExtensionDescriptorMojo.getMapper (ExtensionDescriptorMojo.java:301)
at io.quarkus.maven.ExtensionDescriptorMojo.execute (ExtensionDescriptorMojo.java:170)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
报错涉及到的模块
- sentinel-annotation-quarkus-adapter
- sentinel-demo-quarkus
问题原因
缺少com.fasterxml.jackson.annotation.JsonView
解决方案
提高quarkus版本到1.6.0.Final
需要修改2个pom文件:
sentinel-adapter/sentinel-quarkus-adapter/pom.xml
文件中properties标签下的quarkus.version改成1.6.0.Final。
<?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>com.alibaba.csp</groupId>
<artifactId>sentinel-adapter</artifactId>
<version>1.8.2</version>
</parent>
<artifactId>sentinel-quarkus-adapter-parent</artifactId>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.parameters>true</maven.compiler.parameters>
<quarkus.version>1.6.0.Final</quarkus.version>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
</properties>
<modules>
<module>sentinel-annotation-quarkus-adapter-deployment</module>
<module>sentinel-annotation-quarkus-adapter-runtime</module>
<module>sentinel-jax-rs-quarkus-adapter-deployment</module>
<module>sentinel-jax-rs-quarkus-adapter-runtime</module>
<module>sentinel-native-image-quarkus-adapter-deployment</module>
<module>sentinel-native-image-quarkus-adapter-runtime</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bom-deployment</artifactId>
<version>${quarkus.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
sentinel-demo/sentinel-demo-quarkus/pom.xml
文件中,properties标签下quarkus-plugin.version和quarkus.platform.version改成1.6.0.Final。
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parent>
<artifactId>sentinel-demo</artifactId>
<groupId>com.alibaba.csp</groupId>
<version>1.8.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sentinel-demo-quarkus</artifactId>
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.6.0.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.6.0.Final</quarkus.platform.version>
<surefire-plugin.version>2.22.1</surefire-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jackson</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-logging-slf4j</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-parameter-flow-control</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-jax-rs-quarkus-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-quarkus-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-native-image-quarkus-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemProperties>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.jboss.jandex</groupId>
<artifactId>jandex-maven-plugin</artifactId>
<version>1.0.7</version>
<executions>
<execution>
<id>make-index</id>
<goals>
<goal>jandex</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemProperties>
<native.image.path>
${project.build.directory}/${project.build.finalName}-runner
</native.image.path>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
<quarkus.native.auto-service-loader-registration>true</quarkus.native.auto-service-loader-registration>
<quarkus.native.additional-build-args>-J-Dcsp.sentinel.log.dir=/tmp,-J-Dcsp.sentinel.api.port=8722,-J-Dcsp.sentinel.heartbeat.client.ip=127.0.0.1,-J-Dcsp.sentinel.dashboard.server=127.0.0.1:8080,-J-Dproject.name=sentinel-demo-quarkus,-H:+TraceClassInitialization,--report-unsupported-elements-at-runtime,--allow-incomplete-classpath</quarkus.native.additional-build-args>
</properties>
</profile>
</profiles>
</project>
- 再次执行
mvn clean package -DskipTests
命令,打包成功。
Reactor Summary for sentinel-parent 1.8.2:
[INFO]
[INFO] sentinel-parent … SUCCESS [ 0.307 s]
[INFO] sentinel-core … SUCCESS [ 2.703 s]
[INFO] sentinel-extension … SUCCESS [ 0.019 s]
[INFO] sentinel-datasource-extension … SUCCESS [ 0.150 s]
[INFO] sentinel-datasource-nacos … SUCCESS [ 0.230 s]
[INFO] sentinel-datasource-zookeeper … SUCCESS [ 0.240 s]
[INFO] sentinel-datasource-apollo … SUCCESS [ 0.184 s]
[INFO] sentinel-datasource-redis … SUCCESS [ 0.280 s]
[INFO] sentinel-annotation-aspectj … SUCCESS [ 0.302 s]
[INFO] sentinel-transport … SUCCESS [ 0.022 s]
[INFO] sentinel-transport-common … SUCCESS [ 0.335 s]
[INFO] sentinel-parameter-flow-control … SUCCESS [ 0.416 s]
[INFO] sentinel-datasource-spring-cloud-config … SUCCESS [ 0.524 s]
[INFO] sentinel-datasource-consul … SUCCESS [ 0.230 s]
[INFO] sentinel-datasource-etcd … SUCCESS [ 0.909 s]
[INFO] sentinel-datasource-eureka … SUCCESS [ 0.483 s]
[INFO] sentinel-annotation-cdi-interceptor … SUCCESS [ 0.259 s]
[INFO] sentinel-metric-exporter … SUCCESS [ 0.193 s]
[INFO] sentinel-transport-simple-http … SUCCESS [ 0.272 s]
[INFO] sentinel-transport-netty-http … SUCCESS [ 0.783 s]
[INFO] sentinel-transport-spring-mvc … SUCCESS [ 0.181 s]
[INFO] sentinel-adapter … SUCCESS [ 0.019 s]
[INFO] sentinel-web-servlet … SUCCESS [ 0.318 s]
[INFO] sentinel-dubbo-adapter … SUCCESS [ 0.262 s]
[INFO] sentinel-apache-dubbo-adapter … SUCCESS [ 0.315 s]
[INFO] sentinel-apache-httpclient-adapter … SUCCESS [ 0.300 s]
[INFO] sentinel-sofa-rpc-adapter … SUCCESS [ 0.310 s]
[INFO] sentinel-grpc-adapter … SUCCESS [ 2.321 s]
[INFO] sentinel-api-gateway-adapter-common … SUCCESS [ 0.401 s]
[INFO] sentinel-zuul-adapter … SUCCESS [ 0.509 s]
[INFO] sentinel-reactor-adapter … SUCCESS [ 0.268 s]
[INFO] sentinel-spring-webflux-adapter … SUCCESS [ 0.363 s]
[INFO] sentinel-spring-cloud-gateway-adapter … SUCCESS [ 0.416 s]
[INFO] sentinel-spring-webmvc-adapter … SUCCESS [ 0.302 s]
[INFO] sentinel-zuul2-adapter … SUCCESS [ 0.415 s]
[INFO] sentinel-okhttp-adapter … SUCCESS [ 0.240 s]
[INFO] sentinel-jax-rs-adapter … SUCCESS [ 0.466 s]
[INFO] sentinel-quarkus-adapter-parent … SUCCESS [ 0.021 s]
[INFO] sentinel-annotation-quarkus-adapter … SUCCESS [ 0.442 s]
[INFO] sentinel-annotation-quarkus-adapter-deployment … SUCCESS [ 0.713 s]
[INFO] sentinel-jax-rs-quarkus-adapter … SUCCESS [ 0.189 s]
[INFO] sentinel-jax-rs-quarkus-adapter-deployment … SUCCESS [ 0.700 s]
[INFO] sentinel-logging … SUCCESS [ 0.021 s]
[INFO] sentinel-logging-slf4j … SUCCESS [ 0.161 s]
[INFO] sentinel-native-image-quarkus-adapter … SUCCESS [ 0.670 s]
[INFO] sentinel-native-image-quarkus-adapter-deployment … SUCCESS [ 0.320 s]
[INFO] sentinel-motan-adapter … SUCCESS [ 0.155 s]
[INFO] sentinel-cluster … SUCCESS [ 0.022 s]
[INFO] sentinel-cluster-common-default … SUCCESS [ 0.691 s]
[INFO] sentinel-cluster-client-default … SUCCESS [ 0.434 s]
[INFO] sentinel-cluster-server-default … SUCCESS [ 0.619 s]
[INFO] sentinel-cluster-server-envoy-rls … SUCCESS [ 3.033 s]
[INFO] sentinel-dashboard … SUCCESS [ 1.878 s]
[INFO] sentinel-demo … SUCCESS [ 0.021 s]
[INFO] sentinel-demo-basic … SUCCESS [ 0.163 s]
[INFO] sentinel-demo-dynamic-file-rule … SUCCESS [ 0.143 s]
[INFO] sentinel-demo-rocketmq … SUCCESS [ 0.128 s]
[INFO] sentinel-demo-dubbo … SUCCESS [ 0.193 s]
[INFO] sentinel-demo-nacos-datasource … SUCCESS [ 0.140 s]
[INFO] sentinel-demo-zookeeper-datasource … SUCCESS [ 0.149 s]
[INFO] sentinel-demo-apollo-datasource … SUCCESS [ 0.282 s]
[INFO] sentinel-demo-annotation-spring-aop … SUCCESS [ 0.193 s]
[INFO] sentinel-demo-parameter-flow-control … SUCCESS [ 0.128 s]
[INFO] sentinel-demo-slot-spi … SUCCESS [ 0.104 s]
[INFO] sentinel-demo-slotchain-spi … SUCCESS [ 0.105 s]
[INFO] sentinel-demo-cluster … SUCCESS [ 0.024 s]
[INFO] sentinel-demo-cluster-embedded … SUCCESS [ 0.247 s]
[INFO] sentinel-demo-cluster-server-alone … SUCCESS [ 0.155 s]
[INFO] sentinel-demo-command-handler … SUCCESS [ 0.098 s]
[INFO] sentinel-demo-spring-webflux … SUCCESS [ 0.226 s]
[INFO] sentinel-demo-apache-dubbo … SUCCESS [ 0.196 s]
[INFO] sentinel-demo-apache-httpclient … SUCCESS [ 0.192 s]
[INFO] sentinel-demo-sofa-rpc … SUCCESS [ 0.165 s]
[INFO] sentinel-demo-spring-cloud-gateway … SUCCESS [ 0.234 s]
[INFO] sentinel-demo-zuul-gateway … SUCCESS [ 0.296 s]
[INFO] sentinel-demo-etcd-datasource … SUCCESS [ 0.153 s]
[INFO] sentinel-demo-spring-webmvc … SUCCESS [ 0.198 s]
[INFO] sentinel-demo-zuul2-gateway … SUCCESS [ 0.288 s]
[INFO] sentinel-demo-log-logback … SUCCESS [ 0.172 s]
[INFO] sentinel-demo-okhttp … SUCCESS [ 1.001 s]
[INFO] sentinel-demo-jax-rs … SUCCESS [ 0.206 s]
[INFO] sentinel-demo-quarkus … SUCCESS [ 6.021 s]
[INFO] sentinel-demo-annotation-cdi-interceptor … SUCCESS [ 0.135 s]
[INFO] sentinel-demo-motan … SUCCESS [ 0.196 s]
[INFO] sentinel-demo-transport-spring-mvc … SUCCESS [ 0.298 s]
[INFO] Sentinel JMH benchmark … SUCCESS [ 1.841 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.232 s