| <?xml version="1.0" encoding="UTF-8"?> | |
| <!-- | |
| 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. | |
| --> | |
| <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> | |
| <!--Add the JitPack repository because the moquette-broker dependency needs to be resolved from the JitPack repository--> | |
| <repositories> | |
| <repository> | |
| <id>jitpack.io</id> | |
| <url>https://jitpack.io</url> | |
| </repository> | |
| </repositories> | |
| <parent> | |
| <groupId>org.apache</groupId> | |
| <artifactId>apache</artifactId> | |
| <version>31</version> | |
| </parent> | |
| <groupId>org.apache.iotdb</groupId> | |
| <artifactId>iotdb-parent</artifactId> | |
| <version>2.0.11-SNAPSHOT</version> | |
| <packaging>pom</packaging> | |
| <name>Apache IoTDB Project Parent POM</name> | |
| <description>This is the top level project that builds, packages the iotdb engine, client, and integration libs.</description> | |
| <modules> | |
| <module>iotdb-api</module> | |
| <module>iotdb-client</module> | |
| <module>iotdb-core</module> | |
| <module>iotdb-protocol</module> | |
| <module>library-pipe</module> | |
| <module>distribution</module> | |
| <module>example</module> | |
| <module>library-udf</module> | |
| <module>external-service-impl</module> | |
| <module>architecture-test</module> | |
| </modules> | |
| <properties> | |
| <airlift-units.version>1.7</airlift-units.version> | |
| <airlift.version>206</airlift.version> | |
| <!--airlift-stats.version>235</airlift-stats.version--> | |
| <airline.version>0.9</airline.version> | |
| <antlr4.version>4.13.2</antlr4.version> | |
| <!-- By default, the argLine is empty--> | |
| <argLine/> | |
| <awaitility.version>4.2.0</awaitility.version> | |
| <boost.include.dir/> | |
| <bouncycastle.version>1.84</bouncycastle.version> | |
| <caffeine.version>2.9.3</caffeine.version> | |
| <cglib.version>3.3.0</cglib.version> | |
| <cmake.build.type>Release</cmake.build.type> | |
| <commons-cli.version>1.5.0</commons-cli.version> | |
| <commons-codec.version>1.16.1</commons-codec.version> | |
| <commons-csv.version>1.10.0</commons-csv.version> | |
| <commons-math3.version>3.6.1</commons-math3.version> | |
| <commons-pool2.version>2.11.1</commons-pool2.version> | |
| <commons-lang3.version>3.18.0</commons-lang3.version> | |
| <ctest.skip.tests>false</ctest.skip.tests> | |
| <drill.freemarker.maven.plugin.version>1.21.1</drill.freemarker.maven.plugin.version> | |
| <dropwizard.metrics.version>4.2.19</dropwizard.metrics.version> | |
| <eclipse-collections.version>11.1.0</eclipse-collections.version> | |
| <!-- disable enforcer by default--> | |
| <enforcer.skip>true</enforcer.skip> | |
| <felix.version>5.1.9</felix.version> | |
| <findbugs.jsr305.version>3.0.2</findbugs.jsr305.version> | |
| <forbiddenapis.version>3.10</forbiddenapis.version> | |
| <fusesource-mqtt-client.version>1.16</fusesource-mqtt-client.version> | |
| <google.java.format.version>1.28.0</google.java.format.version> | |
| <gson.version>2.13.1</gson.version> | |
| <guava.version>32.1.2-jre</guava.version> | |
| <h2.version>2.2.224</h2.version> | |
| <httpclient.version>4.5.14</httpclient.version> | |
| <httpcore.version>4.4.16</httpcore.version> | |
| <!-- | |
| This is the version of the thrift binary, that we release separately from here: | |
| https://github.com/apache/iotdb-bin-resources/tree/main/iotdb-tools-thrift | |
| --> | |
| <iotdb-tools-thrift.version>0.25.0.0</iotdb-tools-thrift.version> | |
| <jackson.version>2.18.11</jackson.version> | |
| <jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version> | |
| <jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version> | |
| <jakarta.validation-api.version>3.0.2</jakarta.validation-api.version> | |
| <jakarta.ws.rs-api.version>3.1.0</jakarta.ws.rs-api.version> | |
| <java-websocket.version>1.5.4</java-websocket.version> | |
| <jcip-annotations.version>1.0-1</jcip-annotations.version> | |
| <jersey.version>3.1.11</jersey.version> | |
| <jetty.version>12.0.36</jetty.version> | |
| <jline.version>3.26.2</jline.version> | |
| <jna.version>5.14.0</jna.version> | |
| <jtransforms.version>3.1</jtransforms.version> | |
| <junit.version>4.13.2</junit.version> | |
| <logback.version>1.5.34</logback.version> | |
| <lz4-java.version>1.11.4</lz4-java.version> | |
| <maven.assembly.version>3.6.0</maven.assembly.version> | |
| <maven.compiler.source>17</maven.compiler.source> | |
| <maven.compiler.target>17</maven.compiler.target> | |
| <micrometer.version>1.11.4</micrometer.version> | |
| <!-- It seems that powermock is having issues with the newest mockito versions --> | |
| <mockito.version>2.23.4</mockito.version> | |
| <!--mockito.version>4.11.0</mockito.version--> | |
| <moquette.version>0.18.0</moquette.version> | |
| <netty.version>4.1.137.Final</netty.version> | |
| <openapi.generator.version>7.10.0</openapi.generator.version> | |
| <powermock.version>2.0.9</powermock.version> | |
| <ratis-thirdparty-misc.version>1.1.0</ratis-thirdparty-misc.version> | |
| <ratis.version>3.3.1</ratis.version> | |
| <reactive-streams.version>1.0.4</reactive-streams.version> | |
| <reactor-netty.version>1.2.18</reactor-netty.version> | |
| <reactor.version>3.7.19</reactor.version> | |
| <reflections.version>0.10.2</reflections.version> | |
| <slf4j.version>2.0.9</slf4j.version> | |
| <snappy-java.version>1.1.10.5</snappy-java.version> | |
| <sonar.coverage.jacoco.xmlReportPaths>target/jacoco-merged-reports/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths> | |
| <!-- Exclude all generated code --> | |
| <sonar.exclusions>**/generated-sources</sonar.exclusions> | |
| <sonar.test.exclusions>**/test/**</sonar.test.exclusions> | |
| <!-- URL of the ASF SonarQube server --> | |
| <sonar.host.url>https://sonarcloud.io</sonar.host.url> | |
| <sonar.java.checkstyle.reportPaths>target/checkstyle-report.xml</sonar.java.checkstyle.reportPaths> | |
| <sonar.junit.reportPaths>target/surefire-reports,target/failsafe-reports</sonar.junit.reportPaths> | |
| <sonar.organization>apache</sonar.organization> | |
| <!-- Override this to `true`, if you want to disable spotless --> | |
| <spotless.skip>false</spotless.skip> | |
| <spotless.version>2.44.5</spotless.version> | |
| <clang.format.version>17.0.6</clang.format.version> | |
| <swagger.version>2.2.50</swagger.version> | |
| <thrift.exec-cmd.executable>chmod</thrift.exec-cmd.executable> | |
| <thrift.exec.absolute.path/> | |
| <thrift.version>0.25.0</thrift.version> | |
| <xz.version>1.9</xz.version> | |
| <zstd-jni.version>1.5.6-3</zstd-jni.version> | |
| <tsfile.version>2.4.1-260915-SNAPSHOT</tsfile.version> | |
| <i18n.locale>en</i18n.locale> | |
| <tsfile.locale.opt/> | |
| </properties> | |
| <!-- | |
| if we claim dependencies in dependencyManagement, then we do not claim | |
| their version in subproject's pom, but we have to claim themselves again | |
| in subprojects | |
| --> | |
| <dependencyManagement> | |
| <dependencies> | |
| <dependency> | |
| <groupId>io.netty</groupId> | |
| <artifactId>netty-bom</artifactId> | |
| <version>${netty.version}</version> | |
| <type>pom</type> | |
| <scope>import</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.slf4j</groupId> | |
| <artifactId>slf4j-api</artifactId> | |
| <version>${slf4j.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.thrift</groupId> | |
| <artifactId>libthrift</artifactId> | |
| <version>${thrift.version}</version> | |
| <exclusions> | |
| <!-- We don't use thrift HTTP client or servlet transports. --> | |
| <exclusion> | |
| <groupId>org.apache.httpcomponents.client5</groupId> | |
| <artifactId>httpclient5</artifactId> | |
| </exclusion> | |
| <exclusion> | |
| <groupId>org.apache.httpcomponents.core5</groupId> | |
| <artifactId>httpcore5</artifactId> | |
| </exclusion> | |
| <exclusion> | |
| <groupId>org.apache.httpcomponents.core5</groupId> | |
| <artifactId>httpcore5-h2</artifactId> | |
| </exclusion> | |
| <exclusion> | |
| <groupId>jakarta.servlet</groupId> | |
| <artifactId>jakarta.servlet-api</artifactId> | |
| </exclusion> | |
| <!-- | |
| Thrift generated Java sources suppress @Generated annotations. | |
| IoTDB does not use libthrift APIs that require Jakarta annotations. | |
| --> | |
| <exclusion> | |
| <groupId>jakarta.annotation</groupId> | |
| <artifactId>jakarta.annotation-api</artifactId> | |
| </exclusion> | |
| <!-- | |
| commons-lang3 is only used by Thrift's partial deserialization runtime. | |
| IoTDB does not use org.apache.thrift.partial APIs. | |
| --> | |
| <exclusion> | |
| <groupId>org.apache.commons</groupId> | |
| <artifactId>commons-lang3</artifactId> | |
| </exclusion> | |
| </exclusions> | |
| </dependency> | |
| <dependency> | |
| <groupId>commons-cli</groupId> | |
| <artifactId>commons-cli</artifactId> | |
| <version>${commons-cli.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.jline</groupId> | |
| <artifactId>jline</artifactId> | |
| <version>${jline.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>net.java.dev.jna</groupId> | |
| <artifactId>jna</artifactId> | |
| <version>${jna.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>net.java.dev.jna</groupId> | |
| <artifactId>jna-platform</artifactId> | |
| <version>${jna.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.commons</groupId> | |
| <artifactId>commons-csv</artifactId> | |
| <version>${commons-csv.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>junit</groupId> | |
| <artifactId>junit</artifactId> | |
| <version>${junit.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.mockito</groupId> | |
| <artifactId>mockito-core</artifactId> | |
| <version>${mockito.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.antlr</groupId> | |
| <artifactId>antlr4-runtime</artifactId> | |
| <version>${antlr4.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.xerial.snappy</groupId> | |
| <artifactId>snappy-java</artifactId> | |
| <version>${snappy-java.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.powermock</groupId> | |
| <artifactId>powermock-reflect</artifactId> | |
| <version>${powermock.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.google.guava</groupId> | |
| <artifactId>guava</artifactId> | |
| <version>${guava.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.java-websocket</groupId> | |
| <artifactId>Java-WebSocket</artifactId> | |
| <version>${java-websocket.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.google.code.findbugs</groupId> | |
| <artifactId>jsr305</artifactId> | |
| <version>${findbugs.jsr305.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>jakarta.annotation</groupId> | |
| <artifactId>jakarta.annotation-api</artifactId> | |
| <version>${jakarta.annotation-api.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.google.code.gson</groupId> | |
| <artifactId>gson</artifactId> | |
| <version>${gson.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>jakarta.servlet</groupId> | |
| <artifactId>jakarta.servlet-api</artifactId> | |
| <version>${jakarta.servlet-api.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.bouncycastle</groupId> | |
| <artifactId>bcprov-jdk18on</artifactId> | |
| <version>${bouncycastle.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.bouncycastle</groupId> | |
| <artifactId>bcpkix-jdk18on</artifactId> | |
| <version>${bouncycastle.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.tsfile</groupId> | |
| <artifactId>tsfile</artifactId> | |
| <version>${tsfile.version}</version> | |
| <!-- Once tsfile switch to at.yawk.lz4:lz4-java, remove the following part --> | |
| <exclusions> | |
| <exclusion> | |
| <groupId>org.lz4</groupId> | |
| <artifactId>lz4-java</artifactId> | |
| </exclusion> | |
| </exclusions> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-server</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-server-api</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-common</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-client</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-grpc</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-proto</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-metrics-api</artifactId> | |
| <version>${ratis.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.ratis</groupId> | |
| <artifactId>ratis-thirdparty-misc</artifactId> | |
| <version>${ratis-thirdparty-misc.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.airlift</groupId> | |
| <artifactId>units</artifactId> | |
| <version>${airlift-units.version}</version> | |
| </dependency> | |
| <!-- TODO: Deprecated: Use Airline 2 or Picocli instead --> | |
| <dependency> | |
| <groupId>io.airlift</groupId> | |
| <artifactId>airline</artifactId> | |
| <version>${airline.version}</version> | |
| <exclusions> | |
| <exclusion> | |
| <groupId>javax.inject</groupId> | |
| <artifactId>javax.inject</artifactId> | |
| </exclusion> | |
| </exclusions> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.reflections</groupId> | |
| <artifactId>reflections</artifactId> | |
| <version>${reflections.version}</version> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.github.moquette-io.moquette</groupId> | |
| <artifactId>moquette-broker</artifactId> | |
| <version>${moquette.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.h2database</groupId> | |
| <artifactId>h2-mvstore</artifactId> | |
| <version>${h2.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.httpcomponents</groupId> | |
| <artifactId>httpclient</artifactId> | |
| <version>${httpclient.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.powermock</groupId> | |
| <artifactId>powermock-core</artifactId> | |
| <version>${powermock.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.powermock</groupId> | |
| <artifactId>powermock-module-junit4</artifactId> | |
| <version>${powermock.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.powermock</groupId> | |
| <artifactId>powermock-api-mockito2</artifactId> | |
| <version>${powermock.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>cglib</groupId> | |
| <artifactId>cglib</artifactId> | |
| <version>${cglib.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.github.luben</groupId> | |
| <artifactId>zstd-jni</artifactId> | |
| <version>${zstd-jni.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>at.yawk.lz4</groupId> | |
| <artifactId>lz4-java</artifactId> | |
| <version>${lz4-java.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.tukaani</groupId> | |
| <artifactId>xz</artifactId> | |
| <version>${xz.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.swagger.core.v3</groupId> | |
| <artifactId>swagger-annotations-jakarta</artifactId> | |
| <version>${swagger.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.swagger.core.v3</groupId> | |
| <artifactId>swagger-models-jakarta</artifactId> | |
| <version>${swagger.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.swagger.core.v3</groupId> | |
| <artifactId>swagger-jaxrs2-jakarta</artifactId> | |
| <version>${swagger.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.swagger.core.v3</groupId> | |
| <artifactId>swagger-integration-jakarta</artifactId> | |
| <version>${swagger.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.fusesource.mqtt-client</groupId> | |
| <artifactId>mqtt-client</artifactId> | |
| <version>${fusesource-mqtt-client.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.collections</groupId> | |
| <artifactId>eclipse-collections</artifactId> | |
| <version>${eclipse-collections.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.collections</groupId> | |
| <artifactId>eclipse-collections-api</artifactId> | |
| <version>${eclipse-collections.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.github.wendykierp</groupId> | |
| <artifactId>JTransforms</artifactId> | |
| <version>${jtransforms.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.github.stephenc.jcip</groupId> | |
| <artifactId>jcip-annotations</artifactId> | |
| <version>${jcip-annotations.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>jakarta.validation</groupId> | |
| <artifactId>jakarta.validation-api</artifactId> | |
| <version>${jakarta.validation-api.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>commons-codec</groupId> | |
| <artifactId>commons-codec</artifactId> | |
| <version>${commons-codec.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.commons</groupId> | |
| <artifactId>commons-pool2</artifactId> | |
| <version>${commons-pool2.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.commons</groupId> | |
| <artifactId>commons-lang3</artifactId> | |
| <version>${commons-lang3.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.dropwizard.metrics</groupId> | |
| <artifactId>metrics-core</artifactId> | |
| <version>${dropwizard.metrics.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.jetty</groupId> | |
| <artifactId>jetty-http</artifactId> | |
| <version>${jetty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.jetty</groupId> | |
| <artifactId>jetty-io</artifactId> | |
| <version>${jetty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.jetty</groupId> | |
| <artifactId>jetty-util</artifactId> | |
| <version>${jetty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.jetty</groupId> | |
| <artifactId>jetty-server</artifactId> | |
| <version>${jetty.version}</version> | |
| <exclusions> | |
| <exclusion> | |
| <groupId>jakarta.servlet</groupId> | |
| <artifactId>jakarta.servlet-api</artifactId> | |
| </exclusion> | |
| </exclusions> | |
| </dependency> | |
| <dependency> | |
| <groupId>jakarta.ws.rs</groupId> | |
| <artifactId>jakarta.ws.rs-api</artifactId> | |
| <version>${jakarta.ws.rs-api.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.glassfish.jersey.containers</groupId> | |
| <artifactId>jersey-container-servlet-core</artifactId> | |
| <version>${jersey.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.eclipse.jetty.ee10</groupId> | |
| <artifactId>jetty-ee10-servlet</artifactId> | |
| <version>${jetty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.github.ben-manes.caffeine</groupId> | |
| <artifactId>caffeine</artifactId> | |
| <version>${caffeine.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.httpcomponents</groupId> | |
| <artifactId>httpcore</artifactId> | |
| <version>${httpcore.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.fasterxml.jackson.core</groupId> | |
| <artifactId>jackson-databind</artifactId> | |
| <version>${jackson.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.awaitility</groupId> | |
| <artifactId>awaitility</artifactId> | |
| <version>${awaitility.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.projectreactor.netty</groupId> | |
| <artifactId>reactor-netty-http</artifactId> | |
| <version>${reactor-netty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.projectreactor.netty</groupId> | |
| <artifactId>reactor-netty-core</artifactId> | |
| <version>${reactor-netty.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.projectreactor</groupId> | |
| <artifactId>reactor-core</artifactId> | |
| <version>${reactor.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.reactivestreams</groupId> | |
| <artifactId>reactive-streams</artifactId> | |
| <version>${reactive-streams.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>ch.qos.logback</groupId> | |
| <artifactId>logback-classic</artifactId> | |
| <version>${logback.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>ch.qos.logback</groupId> | |
| <artifactId>logback-core</artifactId> | |
| <version>${logback.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>ch.qos.reload4j</groupId> | |
| <artifactId>reload4j</artifactId> | |
| <version>1.2.22</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>io.micrometer</groupId> | |
| <artifactId>micrometer-core</artifactId> | |
| <version>${micrometer.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.fasterxml.jackson.core</groupId> | |
| <artifactId>jackson-annotations</artifactId> | |
| <version>${jackson.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.fasterxml.jackson.jakarta.rs</groupId> | |
| <artifactId>jackson-jakarta-rs-json-provider</artifactId> | |
| <version>${jackson.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.fasterxml.jackson.datatype</groupId> | |
| <artifactId>jackson-datatype-jsr310</artifactId> | |
| <version>${jackson.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.glassfish.jersey.media</groupId> | |
| <artifactId>jersey-media-multipart</artifactId> | |
| <version>${jersey.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.glassfish.jersey.inject</groupId> | |
| <artifactId>jersey-hk2</artifactId> | |
| <version>${jersey.version}</version> | |
| </dependency> | |
| <!-- Conflict: cglib pulls in 7.1 --> | |
| <dependency> | |
| <groupId>org.ow2.asm</groupId> | |
| <artifactId>asm</artifactId> | |
| <version>9.3</version> | |
| </dependency> | |
| <!-- Conflict: | |
| guava (pulls in 2.18.0), | |
| caffeine (pulls in 2.10.0) | |
| --> | |
| <dependency> | |
| <groupId>com.google.errorprone</groupId> | |
| <artifactId>error_prone_annotations</artifactId> | |
| <version>2.18.0</version> | |
| </dependency> | |
| <!-- Conflict: | |
| jackson-jakarta-rs-json-provider (pulls in 2.15.2), | |
| jackson-databind (pulls in 2.15.2), | |
| jackson-databind-jsd310 (pulls in 2.15.2), | |
| swagger-jaxrs2-jakarta (pulls in 2.15.2), | |
| swagger-integration-jakarta (pulls in 2.15.2) | |
| --> | |
| <dependency> | |
| <groupId>com.fasterxml.jackson.core</groupId> | |
| <artifactId>jackson-core</artifactId> | |
| <version>${jackson.version}</version> | |
| </dependency> | |
| </dependencies> | |
| </dependencyManagement> | |
| <build> | |
| <pluginManagement> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-javadoc-plugin</artifactId> | |
| <version>3.5.0</version> | |
| <configuration> | |
| <excludePackageNames>*thrift*</excludePackageNames> | |
| <!-- | |
| This will suppress the generation of a hidden timestamp at the top of each generated html page | |
| and hopefully let the site generation nod to too big updates every time. | |
| --> | |
| <notimestamp>true</notimestamp> | |
| <!--Don't fail the build, just because there were issues in the JavaDoc generation.--> | |
| <failOnError>false</failOnError> | |
| </configuration> | |
| </plugin> | |
| <!-- | |
| We need to increase the memory available to tests as we were | |
| getting out-of-memory errors when building on windows machines. | |
| --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-surefire-plugin</artifactId> | |
| <version>3.1.2</version> | |
| <configuration> | |
| <argLine>${argLine} -Xmx1024m -Dsurefire.forkNumber=${surefire.forkNumber}</argLine> | |
| <!-- Subscription UT is maintained and executed by the enterprise edition. --> | |
| <excludes> | |
| <exclude>**/subscription/**</exclude> | |
| </excludes> | |
| <!-- Force the working directory to be different for each fork, so forks don't trample each other --> | |
| <workingDirectory>${project.build.directory}/fork_${surefire.forkNumber}</workingDirectory> | |
| </configuration> | |
| </plugin> | |
| <!-- | |
| Plugin for doing the code analysis. | |
| --> | |
| <plugin> | |
| <groupId>org.sonarsource.scanner.maven</groupId> | |
| <artifactId>sonar-maven-plugin</artifactId> | |
| <version>3.9.1.2184</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.rat</groupId> | |
| <artifactId>apache-rat-plugin</artifactId> | |
| <version>0.16.1</version> | |
| <configuration> | |
| <consoleOutput>true</consoleOutput> | |
| <excludes> | |
| <!-- Git related files --> | |
| <exclude>**/.git/**</exclude> | |
| <exclude>**/.mvn/**</exclude> | |
| <exclude>**/.gitignore</exclude> | |
| <exclude>**/.gitmodules</exclude> | |
| <exclude>**/.git-blame-ignore-revs</exclude> | |
| <exclude>**/git.properties</exclude> | |
| <exclude>AGENTS.md</exclude> | |
| <!-- Maven related files --> | |
| <exclude>**/target/**</exclude> | |
| <!-- Eclipse related files --> | |
| <exclude>**/.project</exclude> | |
| <exclude>**/.settings/**</exclude> | |
| <exclude>**/.classpath</exclude> | |
| <!-- IntelliJ related files --> | |
| <exclude>**/.idea/**</exclude> | |
| <exclude>**/*.iml</exclude> | |
| <!-- Runtime log --> | |
| <exclude>**/*.log</exclude> | |
| <!-- Exclude CVS files --> | |
| <exclude>**/*.cvs</exclude> | |
| <!-- licenses --> | |
| <exclude>licenses/*</exclude> | |
| <!-- bundled third-party NOTICE / license texts for the C++ client package --> | |
| <exclude>**/package-metadata/third_party/NOTICE</exclude> | |
| <exclude>**/package-metadata/third_party/licenses/**</exclude> | |
| <!-- generated certificates and private keys used only by C++ TLS tests --> | |
| <exclude>**/client-cpp/test/fixtures/**</exclude> | |
| <exclude>test/fixtures/**/*.crt</exclude> | |
| <exclude>test/fixtures/**/*.key</exclude> | |
| <!-- bundled third-party NOTICE / license texts for the AINode package --> | |
| <exclude>**/ainode/src/assembly/resources/NOTICE-binary</exclude> | |
| <exclude>**/ainode/src/assembly/resources/licenses/**</exclude> | |
| <!-- only for Travis CI with WinOS--> | |
| <exclude>hadoopbin</exclude> | |
| <exclude>windowssystem32</exclude> | |
| <exclude>.ignore</exclude> | |
| <!-- generated by Github --> | |
| <exclude>**/.github/**</exclude> | |
| <!-- figures --> | |
| <exclude>**/.eps</exclude> | |
| <exclude>**/.png</exclude> | |
| <exclude>**/.jpg</exclude> | |
| <exclude>**/.jpeg</exclude> | |
| <!--Generated by Apache Release --> | |
| <exclude>local-snapshots-dir/**</exclude> | |
| <!-- visualization plans --> | |
| <exclude>**/*.plan</exclude> | |
| <exclude>**/NOTICE-binary</exclude> | |
| <exclude>**/LICENSE-binary</exclude> | |
| <!-- json does not support comments--> | |
| <exclude>**/*.json</exclude> | |
| <!-- the zeppelin export file format--> | |
| <exclude>**/*.zpln</exclude> | |
| <!-- exclude go.mod, go.sum and rpc/* in iotdb-client-go submodule--> | |
| <exclude>**/go.mod</exclude> | |
| <exclude>**/go.sum</exclude> | |
| <exclude>client-go/rpc/*</exclude> | |
| <!-- python --> | |
| <exclude>.pytest_cache/**</exclude> | |
| <exclude>**/venv/**</exclude> | |
| <exclude>apache_iotdb.egg-info/**</exclude> | |
| <exclude>**/thrift/**/__init__.py</exclude> | |
| <!-- Java SPI uses files in resources/META-INF/services--> | |
| <exclude>**/resources/META-INF/services/**</exclude> | |
| <!-- site--> | |
| <exclude>**/redirects</exclude> | |
| <exclude>**/.eslintignore</exclude> | |
| <exclude>**/palette.styl</exclude> | |
| <exclude>**/RightMenu.vue</exclude> | |
| <exclude>**/pnpm-lock.yaml</exclude> | |
| <!-- This is generated by the IntelliJ Antlr Plugin --> | |
| <exclude>**/db/qp/sql/gen/**</exclude> | |
| <exclude>**/ainode-example/**</exclude> | |
| </excludes> | |
| </configuration> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.diffplug.spotless</groupId> | |
| <artifactId>spotless-maven-plugin</artifactId> | |
| <version>${spotless.version}</version> | |
| <configuration> | |
| <java> | |
| <googleJavaFormat> | |
| <version>${google.java.format.version}</version> | |
| <style>GOOGLE</style> | |
| </googleJavaFormat> | |
| <importOrder> | |
| <order>org.apache.iotdb,,jakarta,javax,java,\#</order> | |
| </importOrder> | |
| <removeUnusedImports/> | |
| </java> | |
| <lineEndings>UNIX</lineEndings> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>spotless-check</id> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>validate</phase> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.googlecode.maven-download-plugin</groupId> | |
| <artifactId>download-maven-plugin</artifactId> | |
| <version>1.7.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>io.github.cmake-maven-plugin</groupId> | |
| <artifactId>cmake-maven-plugin</artifactId> | |
| <version>4.2.3-b1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-jar-plugin</artifactId> | |
| <version>3.4.2</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.eluder.coveralls</groupId> | |
| <artifactId>coveralls-maven-plugin</artifactId> | |
| <version>4.3.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-enforcer-plugin</artifactId> | |
| <version>3.4.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>net.revelc.code.formatter</groupId> | |
| <artifactId>formatter-maven-plugin</artifactId> | |
| <version>2.23.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-checkstyle-plugin</artifactId> | |
| <version>3.3.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-source-plugin</artifactId> | |
| <version>3.2.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>exec-maven-plugin</artifactId> | |
| <version>3.1.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-assembly-plugin</artifactId> | |
| <version>${maven.assembly.version}</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.cyclonedx</groupId> | |
| <artifactId>cyclonedx-maven-plugin</artifactId> | |
| <version>2.7.11</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>net.nicoulaj.maven.plugins</groupId> | |
| <artifactId>checksum-maven-plugin</artifactId> | |
| <version>1.11</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.jacoco</groupId> | |
| <artifactId>jacoco-maven-plugin</artifactId> | |
| <version>0.8.12</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.coderplus.maven.plugins</groupId> | |
| <artifactId>copy-rename-maven-plugin</artifactId> | |
| <version>1.0.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-shade-plugin</artifactId> | |
| <version>3.5.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-resources-plugin</artifactId> | |
| <version>3.3.1</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-dependency-plugin</artifactId> | |
| <version>3.6.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.thrift</groupId> | |
| <artifactId>thrift-maven-plugin</artifactId> | |
| <version>0.10.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>com.bazaarvoice.maven.plugins</groupId> | |
| <artifactId>process-exec-maven-plugin</artifactId> | |
| <version>0.9</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>build-helper-maven-plugin</artifactId> | |
| <version>3.4.0</version> | |
| <executions> | |
| <execution> | |
| <id>add-i18n-source</id> | |
| <phase>generate-sources</phase> | |
| <goals> | |
| <goal>add-source</goal> | |
| </goals> | |
| <configuration> | |
| <sources> | |
| <source>src/main/i18n/${i18n.locale}</source> | |
| </sources> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.felix</groupId> | |
| <artifactId>maven-bundle-plugin</artifactId> | |
| <version>${felix.version}</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.eclipse.m2e</groupId> | |
| <artifactId>lifecycle-mapping</artifactId> | |
| <version>1.0.0</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.antlr</groupId> | |
| <artifactId>antlr4-maven-plugin</artifactId> | |
| <version>${antlr4.version}</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.drill.tools</groupId> | |
| <artifactId>drill-fmpp-maven-plugin</artifactId> | |
| <version>${drill.freemarker.maven.plugin.version}</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-clean-plugin</artifactId> | |
| <version>3.3.2</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>pl.project13.maven</groupId> | |
| <artifactId>git-commit-id-plugin</artifactId> | |
| <version>4.9.10</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.openapitools</groupId> | |
| <artifactId>openapi-generator-maven-plugin</artifactId> | |
| <version>${openapi.generator.version}</version> | |
| </plugin> | |
| <plugin> | |
| <groupId>au.com.acegi</groupId> | |
| <artifactId>xml-format-maven-plugin</artifactId> | |
| <version>3.2.2</version> | |
| </plugin> | |
| </plugins> | |
| </pluginManagement> | |
| <plugins> | |
| <plugin> | |
| <groupId>com.diffplug.spotless</groupId> | |
| <artifactId>spotless-maven-plugin</artifactId> | |
| <configuration> | |
| <skip>${spotless.skip}</skip> | |
| </configuration> | |
| </plugin> | |
| <!-- | |
| Enforce provider-compatible file APIs in every Maven module. The configured excludes | |
| are paths relative to each module's target/classes directory and are limited to | |
| APIs without a direct provider-compatible lifecycle equivalent. | |
| --> | |
| <plugin> | |
| <groupId>de.thetaphi</groupId> | |
| <artifactId>forbiddenapis</artifactId> | |
| <version>${forbiddenapis.version}</version> | |
| <configuration> | |
| <failOnUnsupportedJava>true</failOnUnsupportedJava> | |
| <!-- Some modules reference optional profile-specific classes, such as AINode thrift types. --> | |
| <failOnMissingClasses>false</failOnMissingClasses> | |
| <signaturesFiles> | |
| <signaturesFile>${maven.multiModuleProjectDirectory}/src/main/forbidden-apis/secure-erase</signaturesFile> | |
| </signaturesFiles> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>check-secure-erase-file-apis</id> | |
| <phase>process-classes</phase> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.eluder.coveralls</groupId> | |
| <artifactId>coveralls-maven-plugin</artifactId> | |
| <configuration> | |
| <jacocoReports> | |
| <jacocoReport>code-coverage/target/jacoco-merged-reports/jacoco.xml</jacocoReport> | |
| </jacocoReports> | |
| <sourceEncoding>UTF-8</sourceEncoding> | |
| <sourceDirectories> | |
| <!-- put all source folders not in src/main/java here--> | |
| <sourceDirectory>iotdb-core/antlr/target/generated-sources/antlr4</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/thrift-datanode/target/generated-sources/thrift</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/thrift-commons/target/generated-sources/thrift</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/thrift-confignode/target/generated-sources/thrift</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/thrift-consensus/target/generated-sources/thrift</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/openapi/target/generated-sources/java/src/gen/java</sourceDirectory> | |
| <sourceDirectory>iotdb-protocol/openapi/target/generated-sources/java/src/main/java</sourceDirectory> | |
| <sourceDirectory>iotdb-core/datanode/target/generated-sources/freemarker/</sourceDirectory> | |
| </sourceDirectories> | |
| </configuration> | |
| <!-- JDK11 removes the following libs. We have to add them--> | |
| <dependencies> | |
| <dependency> | |
| <groupId>javax.xml.bind</groupId> | |
| <artifactId>jaxb-api</artifactId> | |
| <version>2.4.0-b180830.0359</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.sun.xml.bind</groupId> | |
| <artifactId>jaxb-core</artifactId> | |
| <version>2.3.0.1</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.sun.xml.bind</groupId> | |
| <artifactId>jaxb-impl</artifactId> | |
| <version>2.3.6</version> | |
| </dependency> | |
| </dependencies> | |
| </plugin> | |
| <!-- | |
| Strange things usually happen if you run with a too low Java version. | |
| This plugin not only checks the minimum java version of 17, but also | |
| checks all dependencies (and transitive dependencies) for reported CVEs. | |
| --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-enforcer-plugin</artifactId> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.sonatype.ossindex.maven</groupId> | |
| <artifactId>ossindex-maven-enforcer-rules</artifactId> | |
| <version>3.2.0</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>extra-enforcer-rules</artifactId> | |
| <version>1.12.1</version> | |
| </dependency> | |
| </dependencies> | |
| <executions> | |
| <!-- Ensure we're not mixing dependency versions --> | |
| <execution> | |
| <id>enforce-version-convergence</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <phase>validate</phase> | |
| <configuration> | |
| <rules> | |
| <dependencyConvergence/> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| <!-- | |
| Fails the build if classes are included from multiple | |
| artifacts and these are not identical. | |
| --> | |
| <execution> | |
| <id>enforce-ban-duplicate-classes</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <configuration> | |
| <rules> | |
| <banDuplicateClasses> | |
| <scopes> | |
| <scope>compile</scope> | |
| <scope>provided</scope> | |
| </scopes> | |
| <findAllDuplicates>true</findAllDuplicates> | |
| <ignoreWhenIdentical>true</ignoreWhenIdentical> | |
| </banDuplicateClasses> | |
| </rules> | |
| <fail>true</fail> | |
| </configuration> | |
| </execution> | |
| <!-- Make sure no dependencies are used for which known vulnerabilities exist. --> | |
| <execution> | |
| <id>vulnerability-checks</id> | |
| <goals> | |
| <goal>enforce</goal> | |
| </goals> | |
| <phase>validate</phase> | |
| <configuration> | |
| <!-- Just generate warnings for now --> | |
| <fail>true</fail> | |
| <rules> | |
| <requireJavaVersion> | |
| <version>[17,)</version> | |
| </requireJavaVersion> | |
| <banVulnerable implementation="org.sonatype.ossindex.maven.enforcer.BanVulnerableDependencies"> | |
| <excludeCoordinates> | |
| <!-- TODO: For this CVE no fix exists yet (Keep an eye on it) --> | |
| <exclude> | |
| <groupId>io.netty</groupId> | |
| <artifactId>netty-handler</artifactId> | |
| <version>4.1.97.Final</version> | |
| </exclude> | |
| <!-- | |
| CVE-2016-1000027 seems to effect the HTTP Invoker, which we are not using. | |
| These are marked deprecated anyway and are removed in Spring 6.x. Unfortunately, | |
| we are still stuck at 5.x due to the javax-namespace issues. | |
| --> | |
| <exclude> | |
| <groupId>org.springframework</groupId> | |
| <artifactId>spring-web</artifactId> | |
| <version>5.3.30</version> | |
| </exclude> | |
| <!-- | |
| For this CVE no fix exists and will probably never exist | |
| (We should discuss dropping 2.11 anyway) | |
| --> | |
| <exclude> | |
| <groupId>org.apache.spark</groupId> | |
| <artifactId>spark-core_2.11</artifactId> | |
| <version>2.4.8</version> | |
| </exclude> | |
| <!-- | |
| TODO: For this CVE no fix exists yet, however we should keep an eye on this: | |
| https://docs.google.com/presentation/d/1W5KU7ffh4dheR8iD54ulABImi6byAhSI-OhEKw2adRo/edit#slide=id.gaf11915f86_0_0 | |
| --> | |
| <exclude> | |
| <groupId>io.atomix</groupId> | |
| <artifactId>atomix-raft</artifactId> | |
| <version>3.1.12</version> | |
| </exclude> | |
| </excludeCoordinates> | |
| </banVulnerable> | |
| </rules> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- | |
| Even if Maven transitively pulls in dependencies, relying on these can | |
| quite often cause hard to find problems. So it's a good practice to make | |
| sure everything directly required is also directly added as a dependency. | |
| On the other side adding unused dependency only over-complicates the | |
| dependency graph, so the maven-dependency-plugin checks we depend on | |
| what we need and only that and that runtime dependencies are correctly | |
| imported with runtime scope. | |
| --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-dependency-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>check-dependencies</id> | |
| <goals> | |
| <goal>analyze-only</goal> | |
| </goals> | |
| <phase>verify</phase> | |
| <configuration> | |
| <failOnWarning>true</failOnWarning> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>net.revelc.code.formatter</groupId> | |
| <artifactId>formatter-maven-plugin</artifactId> | |
| </plugin> | |
| <!--for code style check --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-checkstyle-plugin</artifactId> | |
| <configuration> | |
| <configLocation>checkstyle.xml</configLocation> | |
| <includeTestSourceDirectory>true</includeTestSourceDirectory> | |
| </configuration> | |
| <dependencies> | |
| <dependency> | |
| <groupId>com.puppycrawl.tools</groupId> | |
| <artifactId>checkstyle</artifactId> | |
| <version>9.3</version> | |
| <!-- Starting with version 10, checkstyle requires Java 11 --> | |
| <!--version>10.12.3</version--> | |
| </dependency> | |
| </dependencies> | |
| <executions> | |
| <execution> | |
| <id>validate</id> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>validate</phase> | |
| <configuration> | |
| <outputFile>target/checkstyle-report.xml</outputFile> | |
| <configLocation>checkstyle.xml</configLocation> | |
| <propertyExpansion>baseDir=${project.basedir}</propertyExpansion> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- | |
| Check if all files contain Apache headers in them. | |
| Ignore this plugin, we use license-maven-plugin to check apache header. | |
| --> | |
| <plugin> | |
| <groupId>org.apache.rat</groupId> | |
| <artifactId>apache-rat-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>license-check</id> | |
| <goals> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>verify</phase> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>au.com.acegi</groupId> | |
| <artifactId>xml-format-maven-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>xml-format</id> | |
| <goals> | |
| <goal>xml-format</goal> | |
| </goals> | |
| <phase>compile</phase> | |
| <configuration> | |
| <!-- configure your formatting preferences here (see link below) --> | |
| <indentSize>4</indentSize> | |
| <excludes> | |
| <exclude>**/target/**</exclude> | |
| </excludes> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- | |
| Generate the legally required text files in the jars | |
| --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-remote-resources-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>process-resource-bundles</id> | |
| <goals> | |
| <goal>process</goal> | |
| </goals> | |
| <configuration> | |
| <resourceBundles> | |
| <!-- Will generate META-INF/{DEPENDENCIES,LICENSE,NOTICE} --> | |
| <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle> | |
| </resourceBundles> | |
| <!-- Content in this directory will be appended to generated resources --> | |
| <appendedResourcesDirectory>${basedir}/src/remote-resources</appendedResourcesDirectory> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- Also package the sources as jar --> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-source-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>create-source-package</id> | |
| <goals> | |
| <goal>jar-no-fork</goal> | |
| </goals> | |
| <phase>package</phase> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| <licenses> | |
| <license> | |
| <name>The Apache License, Version 2.0</name> | |
| <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> | |
| </license> | |
| </licenses> | |
| <mailingLists> | |
| <mailingList> | |
| <name>Apache IoTDB Developer List</name> | |
| <subscribe>mailto:dev-subscribe@iotdb.apache.org</subscribe> | |
| <unsubscribe>mailto:dev-unsubscribe@iotdb.apache.org</unsubscribe> | |
| <post>mailto:dev@iotdb.apache.org</post> | |
| <archive>http://mail-archives.apache.org/mod_mbox/iotdb-dev/</archive> | |
| </mailingList> | |
| <mailingList> | |
| <name>IoTDB Commits List</name> | |
| <subscribe>mailto:commit-subscribe@iotdb.apache.org</subscribe> | |
| <unsubscribe>mailto:commits-unsubscribe@iotdb.apache.org</unsubscribe> | |
| <post>mailto:commits@iotdb.apache.org</post> | |
| <archive>http://mail-archives.apache.org/mod_mbox/iotdb-commits/</archive> | |
| </mailingList> | |
| <mailingList> | |
| <name>IoTDB Jira Notifications List</name> | |
| <subscribe>mailto:notifications-subscribe@iotdb.apache.org</subscribe> | |
| <unsubscribe>mailto:notifications-unsubscribe@iotdb.apache.org</unsubscribe> | |
| <post>mailto:notifications@iotdb.apache.org</post> | |
| <archive>http://mail-archives.apache.org/mod_mbox/iotdb-notifications/</archive> | |
| </mailingList> | |
| </mailingLists> | |
| <scm> | |
| <connection>scm:git:ssh://git@github.com/apache/iotdb.git</connection> | |
| <developerConnection>scm:git:ssh://git@github.com/apache/iotdb.git</developerConnection> | |
| <url>ssh://git@github.com:apache/iotdb.git</url> | |
| <tag>rel/0.10</tag> | |
| </scm> | |
| <issueManagement> | |
| <system>Jira</system> | |
| <url>https://issues.apache.org/jira/browse/iotdb</url> | |
| </issueManagement> | |
| <!-- Only configure the site distribution as the rest is handled by the apache parent --> | |
| <distributionManagement> | |
| <site> | |
| <id>apache.website</id> | |
| <url>scm:git:https://gitbox.apache.org/repos/asf/iotdb-website.git</url> | |
| </site> | |
| </distributionManagement> | |
| <profiles> | |
| <!-- | |
| A set of profiles defining the different properties needed to download and run thrift | |
| They are automatically activated depending on the OS you are using. | |
| --> | |
| <profile> | |
| <id>.os-unix</id> | |
| <activation> | |
| <os> | |
| <name>Linux</name> | |
| <family>unix</family> | |
| <arch>!aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <cmake.generator>Unix Makefiles</cmake.generator> | |
| <os.classifier>linux-x86_64</os.classifier> | |
| <thrift.executable>thrift</thrift.executable> | |
| <python.venv.bin>venv/bin/</python.venv.bin> | |
| <python.exe.bin>python3</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.os-unix-arm</id> | |
| <activation> | |
| <os> | |
| <name>Linux</name> | |
| <family>unix</family> | |
| <arch>aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <cmake.generator>Unix Makefiles</cmake.generator> | |
| <os.classifier>linux-aarch64</os.classifier> | |
| <thrift.executable>thrift</thrift.executable> | |
| <python.venv.bin>venv/bin/</python.venv.bin> | |
| <python.exe.bin>python3</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.os-mac</id> | |
| <activation> | |
| <os> | |
| <family>mac</family> | |
| <arch>!aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <boost.include.dir>/usr/local/include</boost.include.dir> | |
| <cmake.generator>Unix Makefiles</cmake.generator> | |
| <os.classifier>mac-x86_64</os.classifier> | |
| <thrift.executable>thrift</thrift.executable> | |
| <python.venv.bin>venv/bin/</python.venv.bin> | |
| <python.exe.bin>python3</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.os-mac-arm</id> | |
| <activation> | |
| <os> | |
| <family>mac</family> | |
| <arch>aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <boost.include.dir>/opt/homebrew/opt/boost/include</boost.include.dir> | |
| <cmake.generator>Unix Makefiles</cmake.generator> | |
| <os.classifier>mac-aarch64</os.classifier> | |
| <thrift.executable>thrift</thrift.executable> | |
| <python.venv.bin>venv/bin/</python.venv.bin> | |
| <python.exe.bin>python3</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.os-windows</id> | |
| <activation> | |
| <os> | |
| <family>windows</family> | |
| <arch>!aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <!-- The generated code relied on Boost and that relies on VS and can't be built with MinGW --> | |
| <cmake.generator>Visual Studio 17 2022</cmake.generator> | |
| <os.classifier>windows-x86_64</os.classifier> | |
| <thrift.executable>Release/thrift.exe</thrift.executable> | |
| <python.venv.bin>venv/Scripts/</python.venv.bin> | |
| <python.exe.bin>python</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.os-windows-arm</id> | |
| <activation> | |
| <os> | |
| <family>windows</family> | |
| <arch>aarch64</arch> | |
| </os> | |
| </activation> | |
| <properties> | |
| <!-- The generated code relied on Boost and that relies on VS and can't be built with MinGW --> | |
| <cmake.generator>Visual Studio 17 2022</cmake.generator> | |
| <os.classifier>windows-aarch64</os.classifier> | |
| <thrift.executable>Release/thrift.exe</thrift.executable> | |
| <python.venv.bin>venv/Scripts/</python.venv.bin> | |
| <python.exe.bin>python</python.exe.bin> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>.java-17-and-above</id> | |
| <activation> | |
| <jdk>[17,)</jdk> | |
| </activation> | |
| <properties> | |
| <maven.compiler.release>17</maven.compiler.release> | |
| <!-- | |
| Add argLine for Java 17 and above, due to | |
| [JEP 260: Encapsulate Most Internal APIs], | |
| [JEP 396: Strongly Encapsulate JDK Internals by Default], | |
| [JEP 403: Strongly Encapsulate JDK Internals] | |
| --> | |
| <argLine><![CDATA[ | |
| --add-opens=java.base/java.lang=ALL-UNNAMED | |
| --add-opens=java.base/java.util=ALL-UNNAMED | |
| --add-opens=java.base/java.nio=ALL-UNNAMED | |
| --add-opens=java.base/java.io=ALL-UNNAMED | |
| --add-opens=java.base/java.net=ALL-UNNAMED | |
| --add-opens=java.base/java.util.concurrent=ALL-UNNAMED | |
| --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED | |
| --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED | |
| --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED | |
| --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED | |
| --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED | |
| ]]></argLine> | |
| </properties> | |
| </profile> | |
| <!-- Current version of spotless cannot support JDK17 below --> | |
| <profile> | |
| <id>.java-17-below</id> | |
| <activation> | |
| <jdk>(,17)</jdk> | |
| </activation> | |
| <properties> | |
| <!-- Keep old Spotless disabled when running below the minimum supported JDK. --> | |
| <spotless.version>2.27.1</spotless.version> | |
| <!-- To avoid format conflicts --> | |
| <spotless.skip>true</spotless.skip> | |
| </properties> | |
| </profile> | |
| <!-- Little helper profile that will disable running the cmake tests when the maven tests are being skipped --> | |
| <profile> | |
| <id>.skipTests</id> | |
| <activation> | |
| <property> | |
| <name>skipTests</name> | |
| </property> | |
| </activation> | |
| <properties> | |
| <ctest.skip.tests>true</ctest.skip.tests> | |
| </properties> | |
| </profile> | |
| <!-- | |
| Self activating profile, that activates itself as soon as a "src/main/thrift" directory is found. | |
| The different plugins here download the thrift executable matching the current os, make that | |
| executable (on mac and unix/linux) and run the code generation. | |
| Note to the Download: The download-maven-plugin checks if a resource is previously downloaded | |
| and only downloads each file once. It caches downloaded files in: | |
| {maven local repo}/.cache/download-maven-plugin | |
| --> | |
| <profile> | |
| <id>.thrift-generation</id> | |
| <activation> | |
| <file> | |
| <exists>src/main/thrift</exists> | |
| </file> | |
| </activation> | |
| <properties> | |
| <thrift.exec.absolute.path>${project.build.directory}/thrift/bin/${thrift.executable}</thrift.exec.absolute.path> | |
| </properties> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-dependency-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>get-thrift</id> | |
| <goals> | |
| <goal>unpack</goal> | |
| </goals> | |
| <phase>generate-sources</phase> | |
| <configuration> | |
| <artifactItems> | |
| <artifactItem> | |
| <groupId>org.apache.iotdb.tools</groupId> | |
| <artifactId>iotdb-tools-thrift</artifactId> | |
| <version>${iotdb-tools-thrift.version}</version> | |
| <classifier>${os.classifier}</classifier> | |
| <type>zip</type> | |
| <overWrite>true</overWrite> | |
| <outputDirectory>${project.build.directory}/thrift</outputDirectory> | |
| </artifactItem> | |
| </artifactItems> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.apache.thrift</groupId> | |
| <artifactId>thrift-maven-plugin</artifactId> | |
| <configuration> | |
| <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable> | |
| <thriftSourceRoot>${project.basedir}/src/main/thrift</thriftSourceRoot> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>generate-thrift-sources-java</id> | |
| <goals> | |
| <goal>compile</goal> | |
| </goals> | |
| <phase>generate-sources</phase> | |
| <configuration> | |
| <generator>java:generated_annotations=suppress</generator> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>generate-thrift-sources-python</id> | |
| <goals> | |
| <goal>compile</goal> | |
| </goals> | |
| <phase>generate-sources</phase> | |
| <configuration> | |
| <generator>py</generator> | |
| <includes>**/common.thrift,**/client.thrift,**/datanode.thrift,**/confignode.thrift,**/ainode.thrift</includes> | |
| <outputDirectory>${project.build.directory}/generated-sources-python/</outputDirectory> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>generate-thrift-sources-go</id> | |
| <goals> | |
| <goal>compile</goal> | |
| </goals> | |
| <phase>generate-sources</phase> | |
| <configuration> | |
| <generator>go:package_prefix=github.com/apache/iotdb-client-go/v2/</generator> | |
| <includes>**/common.thrift,**/client.thrift</includes> | |
| <outputDirectory>${project.build.directory}/generated-sources-go</outputDirectory> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>generate-thrift-sources-csharp</id> | |
| <goals> | |
| <goal>compile</goal> | |
| </goals> | |
| <phase>generate-sources</phase> | |
| <configuration> | |
| <generator>netstd:no_deepcopy</generator> | |
| <includes>**/common.thrift,**/client.thrift</includes> | |
| <!-- The output directory is set to the parent of the generated sources for copying--> | |
| <outputDirectory>${project.parent.build.directory}/generated-sources-csharp</outputDirectory> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <!-- Enable integration-testsuite on demand, as this takes quite a long time to run --> | |
| <profile> | |
| <id>with-integration-tests</id> | |
| <modules> | |
| <module>integration-test</module> | |
| </modules> | |
| </profile> | |
| <!-- | |
| This profile enables a check, that uses information from the SBOM generated by the cyclonedx plugin | |
| and compares this with the "known dependencies" in the "dependencies.json" file in the root of the project. | |
| This makes it more obvious, if a PR adds or removes any dependencies. | |
| --> | |
| <profile> | |
| <id>enable-sbom-check</id> | |
| <build> | |
| <plugins> | |
| <!-- Check if we've changed any dependencies being included --> | |
| <plugin> | |
| <groupId>org.cyclonedx</groupId> | |
| <artifactId>cyclonedx-maven-plugin</artifactId> | |
| <!-- Only run this in the root module of the project --> | |
| <inherited>false</inherited> | |
| <configuration> | |
| <outputName>apache-${project.artifactId}-${project.version}-sbom</outputName> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <phase>package</phase> | |
| <goals> | |
| <goal>makeAggregateBom</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.mojo</groupId> | |
| <artifactId>xml-maven-plugin</artifactId> | |
| <version>1.1.0</version> | |
| <!-- Only run this in the root module of the project --> | |
| <inherited>false</inherited> | |
| <executions> | |
| <execution> | |
| <phase>package</phase> | |
| <goals> | |
| <goal>transform</goal> | |
| </goals> | |
| <configuration> | |
| <transformationSets> | |
| <transformationSet> | |
| <dir>${project.basedir}/target/</dir> | |
| <includes>apache-${project.artifactId}-${project.version}-sbom.xml</includes> | |
| <stylesheet>src/main/xslt/sbom-filter.xsl</stylesheet> | |
| <outputDir>${project.basedir}/target/</outputDir> | |
| <fileMappers> | |
| <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> | |
| <targetExtension>transformed.json</targetExtension> | |
| </fileMapper> | |
| </fileMappers> | |
| </transformationSet> | |
| </transformationSets> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| <dependencies> | |
| <dependency> | |
| <groupId>net.sf.saxon</groupId> | |
| <artifactId>Saxon-HE</artifactId> | |
| <version>12.5</version> | |
| </dependency> | |
| </dependencies> | |
| </plugin> | |
| <plugin> | |
| <groupId>org.codehaus.gmaven</groupId> | |
| <artifactId>groovy-maven-plugin</artifactId> | |
| <version>2.1.1</version> | |
| <!-- Only run this in the root module of the project --> | |
| <inherited>false</inherited> | |
| <executions> | |
| <execution> | |
| <id>compare-with-reference-list</id> | |
| <phase>verify</phase> | |
| <goals> | |
| <goal>execute</goal> | |
| </goals> | |
| <configuration> | |
| <source>src/main/groovy/checkDependencies.groovy</source> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.apache.groovy</groupId> | |
| <artifactId>groovy</artifactId> | |
| <version>4.0.22</version> | |
| </dependency> | |
| </dependencies> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <!-- Make sure the source assembly has the right name --> | |
| <profile> | |
| <id>apache-release</id> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-assembly-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>source-release-assembly</id> | |
| <goals> | |
| <goal>single</goal> | |
| </goals> | |
| <phase>package</phase> | |
| <!-- | |
| heads up: combine.self in the following is highlighted | |
| as an error in Eclipse's xml editor view. | |
| Just ignore that. | |
| See https://issues.apache.org/jira/browse/MNG-5454 sigh. | |
| --> | |
| <configuration combine.self="append"> | |
| <finalName>apache-iotdb-${project.version}</finalName> | |
| <archive> | |
| <manifest> | |
| <addDefaultImplementationEntries>true</addDefaultImplementationEntries> | |
| <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> | |
| </manifest> | |
| </archive> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- | |
| Generate an SBOM for the project | |
| --> | |
| <plugin> | |
| <groupId>org.cyclonedx</groupId> | |
| <artifactId>cyclonedx-maven-plugin</artifactId> | |
| <!-- Only run this in the root module of the project --> | |
| <inherited>false</inherited> | |
| <configuration> | |
| <outputName>apache-${project.artifactId}-${project.version}-sbom</outputName> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <goals> | |
| <goal>makeAggregateBom</goal> | |
| </goals> | |
| <phase>package</phase> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- | |
| Create SHA512 checksum files for the release artifacts. | |
| --> | |
| <plugin> | |
| <groupId>net.nicoulaj.maven.plugins</groupId> | |
| <artifactId>checksum-maven-plugin</artifactId> | |
| <executions> | |
| <execution> | |
| <id>sign-source-release</id> | |
| <goals> | |
| <goal>files</goal> | |
| </goals> | |
| <phase>package</phase> | |
| <configuration> | |
| <algorithms> | |
| <algorithm>SHA-512</algorithm> | |
| </algorithms> | |
| <fileSets> | |
| <fileSet> | |
| <directory>${project.build.directory}</directory> | |
| <includes> | |
| <include>apache-iotdb-${project.version}-source-release.zip</include> | |
| </includes> | |
| </fileSet> | |
| </fileSets> | |
| <failIfNoFiles>false</failIfNoFiles> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <!-- code coverage for ut and it, and then merge them together.--> | |
| <profile> | |
| <id>with-code-coverage</id> | |
| <modules> | |
| <module>code-coverage</module> | |
| </modules> | |
| <build> | |
| <plugins> | |
| <!-- | |
| Jacoco is a code coverage analysis plugin when tests run. | |
| (not a static code analysis tool) | |
| --> | |
| <plugin> | |
| <groupId>org.jacoco</groupId> | |
| <artifactId>jacoco-maven-plugin</artifactId> | |
| <configuration> | |
| <excludes> | |
| <exclude>org/apache/iotdb/service/sync/thrift/*</exclude> | |
| <exclude>org/apache/iotdb/service/rpc/thrift/*</exclude> | |
| <exclude>org/apache/iotdb/db/qp/sql/*</exclude> | |
| </excludes> | |
| <rules> | |
| <rule implementation="org.jacoco.maven.RuleConfiguration"> | |
| <element>BUNDLE</element> | |
| <limits> | |
| <!-- Cover methodes >=30%. (the plugin does not support | |
| ignore getter and setter and toString etc..) --> | |
| <limit implementation="org.jacoco.report.check.Limit"> | |
| <counter>METHOD</counter> | |
| <value>COVEREDRATIO</value> | |
| <minimum>0.00</minimum> | |
| </limit> | |
| <!-- if-else, swtich etc.. >=70% --> | |
| <limit implementation="org.jacoco.report.check.Limit"> | |
| <counter>BRANCH</counter> | |
| <value>COVEREDRATIO</value> | |
| <minimum>0.00</minimum> | |
| </limit> | |
| <!-- class files >=95% --> | |
| <limit implementation="org.jacoco.report.check.Limit"> | |
| <counter>CLASS</counter> | |
| <value>COVEREDRATIO</value> | |
| <minimum>0.00</minimum> | |
| </limit> | |
| </limits> | |
| </rule> | |
| </rules> | |
| </configuration> | |
| <executions> | |
| <!-- see https://natritmeyer.com/howto/reporting-aggregated-unit-and-integration-test-coverage-with-jacoco/--> | |
| <!-- For UT--> | |
| <execution> | |
| <id>prepare-ut</id> | |
| <goals> | |
| <goal>prepare-agent</goal> | |
| </goals> | |
| <configuration> | |
| <destFile>${project.build.directory}/${project.build.finalName}-jacoco-unit-tests.exec</destFile> | |
| <propertyName>surefire.jacoco.args</propertyName> | |
| </configuration> | |
| </execution> | |
| <!-- attached to Maven test phase --> | |
| <execution> | |
| <id>ut-report</id> | |
| <goals> | |
| <goal>report</goal> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>test</phase> | |
| <configuration> | |
| <dataFile>${project.build.directory}/${project.build.finalName}-jacoco-unit-tests.exec</dataFile> | |
| <outputDirectory>${project.build.directory}/jacoco-unit-reports</outputDirectory> | |
| </configuration> | |
| </execution> | |
| <!-- For IT--> | |
| <execution> | |
| <id>before-integration-test-execution</id> | |
| <goals> | |
| <goal>prepare-agent</goal> | |
| </goals> | |
| <phase>pre-integration-test</phase> | |
| <configuration> | |
| <destFile>${project.build.directory}/${project.build.finalName}-jacoco-integration-tests.exec</destFile> | |
| <propertyName>failsafe.jacoco.args</propertyName> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>after-integration-test-execution</id> | |
| <goals> | |
| <goal>report</goal> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>integration-test</phase> | |
| <configuration> | |
| <dataFile>${project.build.directory}/${project.build.finalName}-jacoco-integration-tests.exec</dataFile> | |
| <outputDirectory>${project.build.directory}/jacoco-integration-reports</outputDirectory> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>merge-unit-and-integration</id> | |
| <goals> | |
| <goal>merge</goal> | |
| </goals> | |
| <phase>post-integration-test</phase> | |
| <configuration> | |
| <fileSets> | |
| <fileSet> | |
| <directory>${project.build.directory}/</directory> | |
| <includes> | |
| <include>*.exec</include> | |
| </includes> | |
| </fileSet> | |
| </fileSets> | |
| <destFile>${project.build.directory}/${project.build.finalName}-merged.exec</destFile> | |
| </configuration> | |
| </execution> | |
| <execution> | |
| <id>create-merged-report</id> | |
| <goals> | |
| <goal>report</goal> | |
| <goal>check</goal> | |
| </goals> | |
| <phase>post-integration-test</phase> | |
| <configuration> | |
| <dataFile>${project.build.directory}/${project.build.finalName}-merged.exec</dataFile> | |
| <outputDirectory>${project.build.directory}/jacoco-merged-reports</outputDirectory> | |
| </configuration> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <!-- overwrite argLine--> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-surefire-plugin</artifactId> | |
| <configuration> | |
| <argLine>${argLine} @{surefire.jacoco.args} -Xmx1024m -Dsurefire.forkNumber=${surefire.forkNumber}</argLine> | |
| </configuration> | |
| </plugin> | |
| <!-- for IT--> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-failsafe-plugin</artifactId> | |
| <configuration> | |
| <argLine>${argLine} @{failsafe.jacoco.args} -Xmx1024m</argLine> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <goals> | |
| <goal>integration-test</goal> | |
| <goal>verify</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> | |
| <profile> | |
| <id>enforce</id> | |
| <properties> | |
| <enforcer.skip>false</enforcer.skip> | |
| </properties> | |
| </profile> | |
| <profile> | |
| <id>with-zh-locale</id> | |
| <properties> | |
| <i18n.locale>zh</i18n.locale> | |
| <tsfile.locale.opt>-Dtsfile.locale=zh</tsfile.locale.opt> | |
| </properties> | |
| </profile> | |
| </profiles> | |
| </project> |