IGNITE-14011 Add RAT, headers check, PMD, Idea Inspections, and code style suites for Ignite 3 (#28)
diff --git a/check-rules/checkstyle-rules.xml b/check-rules/checkstyle-rules.xml
new file mode 100644
index 0000000..36b4b86
--- /dev/null
+++ b/check-rules/checkstyle-rules.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+
+<!--
+ 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.
+-->
+
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+<module name="Checker">
+ <property name="charset" value="UTF-8"/>
+
+ <property name="fileExtensions" value="java, properties, xml"/>
+
+ <!-- Whitespaces Checks. See: http://checkstyle.sourceforge.net/config_whitespace.html -->
+ <module name="FileTabCharacter">
+ <property name="eachLine" value="true"/>
+ </module>
+
+ <module name="TreeWalker">
+ <!-- Coding Checks. See: https://checkstyle.sourceforge.io/config_coding.html -->
+ <module name="SimplifyBooleanExpression"/>
+
+ <!-- Import Checks. See: http://checkstyle.sourceforge.net/config_imports.html -->
+ <module name="UnusedImports"/>
+
+ <!-- Whitespaces: See: https://checkstyle.sourceforge.io/config_whitespace.html -->
+ <module name="WhitespaceAround">
+ <property name="allowEmptyConstructors" value="true"/>
+ <property name="allowEmptyMethods" value="true"/>
+ <property name="allowEmptyTypes" value="true"/>
+ <property name="allowEmptyLoops" value="true"/>
+ <property name="allowEmptyLambdas" value="true"/>
+ <property name="allowEmptyCatches" value="true"/>
+ </module>
+
+ <!--Modifiers Checks. See: http://checkstyle.sourceforge.net/config_modifier.html-->
+ <module name="ModifierOrder"/>
+
+ <!--Annotation checks. See: http://checkstyle.sourceforge.net/config_annotation.html-->
+ <module name="MissingOverride"/>
+
+ <!-- Empty line checks. See: http://checkstyle.sourceforge.net/config_whitespace.html#EmptyLineSeparator -->
+ <module name="EmptyLineSeparator">
+ <!-- PACKAGE_DEF excluded according to Ignite code style. -->
+ <property name="tokens" value="IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT,
+ INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
+
+ <property name="allowMultipleEmptyLines" value="false" />
+ <property name="allowMultipleEmptyLinesInsideClassMembers" value="false" />
+ </module>
+
+ <!-- @Override annotations on the same line with a method declaration check. -->
+ <!--module name="org.apache.ignite.tools.checkstyle.OverrideAnnotationOnTheSameLineCheck"/-->
+
+ <!--
+ Checks the padding between the identifier of a method definition, constructor definition, method call, or
+ constructor invocation; and the left parenthesis of the parameter list.
+ See: https://checkstyle.sourceforge.io/config_whitespace.html#MethodParamPad
+ -->
+ <module name="MethodParamPad"/>
+
+ <!--
+ Checks that there is no whitespace after a token.
+ See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceAfter
+ -->
+ <module name="NoWhitespaceAfter">
+ <property name="tokens" value="AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR,
+ INDEX_OP, METHOD_REF"/>
+ </module>
+
+ <!--
+ Checks that there is no whitespace before a token.
+ See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceBefore
+ -->
+ <module name="NoWhitespaceBefore">
+ <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, ELLIPSIS, METHOD_REF, GENERIC_END"/>
+ </module>
+
+ <module name="NoWhitespaceBefore">
+ <property name="allowLineBreaks" value="true"/>
+ <property name="tokens" value="DOT"/>
+ </module>
+
+ <!--
+ Checks that the whitespace around the Generic tokens are correct.
+ See: https://checkstyle.sourceforge.io/config_whitespace.html#GenericWhitespace
+ -->
+ <module name="GenericWhitespace"/>
+
+ <!--
+ Checks that non-whitespace characters are separated by no more than one whitespace.
+ See: https://checkstyle.sourceforge.io/config_whitespace.html#SingleSpaceSeparator
+ -->
+ <module name="SingleSpaceSeparator"/>
+ </module>
+</module>
diff --git a/check-rules/checkstyle-suppressions.xml b/check-rules/checkstyle-suppressions.xml
new file mode 100644
index 0000000..3273169
--- /dev/null
+++ b/check-rules/checkstyle-suppressions.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+
+<!--
+ 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.
+-->
+
+<!DOCTYPE suppressions PUBLIC
+ "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
+ "https://checkstyle.org/dtds/suppressions_1_2.dtd">
+<suppressions>
+</suppressions>
diff --git a/check-rules/pmd-rules.xml b/check-rules/pmd-rules.xml
new file mode 100644
index 0000000..e10ea10
--- /dev/null
+++ b/check-rules/pmd-rules.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+<!--
+ 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.
+-->
+
+<ruleset name="Default Maven PMD Plugin Ruleset"
+ xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
+
+ <description>
+ PMD Ruleset for Apache Ignite
+ </description>
+
+ <rule ref="category/java/errorprone.xml/EmptyFinallyBlock" />
+ <rule ref="category/java/errorprone.xml/EmptySwitchStatements" />
+</ruleset>
diff --git a/modules/cli-common/pom.xml b/modules/cli-common/pom.xml
index e932309..d6fd8c1 100644
--- a/modules/cli-common/pom.xml
+++ b/modules/cli-common/pom.xml
@@ -24,10 +24,11 @@
<parent>
<groupId>org.apache.ignite</groupId>
- <artifactId>apache-ignite</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>ignite-cli-common</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
</project>
diff --git a/modules/cli/pom.xml b/modules/cli/pom.xml
index 42a8f9d..8c6a3d2 100644
--- a/modules/cli/pom.xml
+++ b/modules/cli/pom.xml
@@ -26,12 +26,13 @@
<parent>
<groupId>org.apache.ignite</groupId>
- <artifactId>apache-ignite</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>ignite-cli</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
@@ -234,16 +235,6 @@
<skip>true</skip>
</configuration>
</plugin>
-
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>**/builtin_modules.conf</exclude>
- </excludes>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
diff --git a/modules/configuration-annotation-processor/pom.xml b/modules/configuration-annotation-processor/pom.xml
index fa93d22..a986a59 100644
--- a/modules/configuration-annotation-processor/pom.xml
+++ b/modules/configuration-annotation-processor/pom.xml
@@ -26,12 +26,13 @@
<parent>
<groupId>org.apache.ignite</groupId>
- <artifactId>apache-ignite</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>ignite-configuration-annotation-processor</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
@@ -70,6 +71,13 @@
<artifactId>spoon-core</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
@@ -96,16 +104,6 @@
</execution>
</executions>
</plugin>
-
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>src/main/resources/META-INF/services/javax.annotation.processing.Processor</exclude>
- </excludes>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
diff --git a/modules/configuration/pom.xml b/modules/configuration/pom.xml
index 543e4c1..68164f7 100644
--- a/modules/configuration/pom.xml
+++ b/modules/configuration/pom.xml
@@ -26,12 +26,13 @@
<parent>
<groupId>org.apache.ignite</groupId>
- <artifactId>apache-ignite</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>ignite-configuration</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
diff --git a/modules/ignite-runner/pom.xml b/modules/ignite-runner/pom.xml
index e38f83f..f527e09 100644
--- a/modules/ignite-runner/pom.xml
+++ b/modules/ignite-runner/pom.xml
@@ -26,12 +26,13 @@
<parent>
<groupId>org.apache.ignite</groupId>
- <artifactId>apache-ignite</artifactId>
- <version>3.0.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>../../parent/pom.xml</relativePath>
</parent>
<artifactId>ignite-runner</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
@@ -71,17 +72,5 @@
<filtering>true</filtering>
</resource>
</resources>
-
- <plugins>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>src/main/resources/bootstrap-config.json</exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
</build>
</project>
diff --git a/parent/pom.xml b/parent/pom.xml
new file mode 100644
index 0000000..b0129a1
--- /dev/null
+++ b/parent/pom.xml
@@ -0,0 +1,325 @@
+<?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.
+-->
+
+<!--
+ POM file.
+-->
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>23</version>
+ <relativePath></relativePath>
+ </parent>
+
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+
+ <description>Apache Ignite is a distributed database for high-performance computing with in-memory speed.</description>
+
+ <licenses>
+ <license>
+ <name>The Apache Software License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ </license>
+ </licenses>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+
+ <!-- Dependencies versions -->
+ <apache.ivy.version>2.5.0</apache.ivy.version>
+ <compile.testing.library.version>0.19</compile.testing.library.version>
+ <gson.version>2.8.6</gson.version>
+ <jackson.databind.version>2.11.1</jackson.databind.version>
+ <jansi.version>1.18</jansi.version>
+ <javalin.version>3.12.0</javalin.version>
+ <javapoet.version>1.13.0</javapoet.version>
+ <javax.annotation.api.version>1.3.2</javax.annotation.api.version>
+ <javax.validation.version>2.0.1.Final</javax.validation.version>
+ <jetbrains.annotations.version>20.1.0</jetbrains.annotations.version>
+ <junit.jupiter.version>5.7.0</junit.jupiter.version>
+ <log4j.version>1.2.17</log4j.version>
+ <logback.version>1.2.3</logback.version>
+ <micronaut.version>2.1.2</micronaut.version>
+ <micronaut.test.junit5.version>2.3.1</micronaut.test.junit5.version>
+ <mockito.framework.version>3.4.6</mockito.framework.version>
+ <mockito.junit.jupiter.version>3.3.3</mockito.junit.jupiter.version>
+ <picocli.version>4.5.2</picocli.version>
+ <slf4j.version>1.7.30</slf4j.version>
+ <spoon.framework.version>8.3.0</spoon.framework.version>
+ <typesafe.version>1.4.1</typesafe.version>
+
+ <!-- Plugins versions -->
+ <apache.rat.plugin.version>0.13</apache.rat.plugin.version>
+ <checkstyle.puppycrawl.version>8.37</checkstyle.puppycrawl.version>
+ <launch.mave.plugin.version>1.7.25</launch.mave.plugin.version>
+ <maven.antrun.plugin.version>3.0.0</maven.antrun.plugin.version>
+ <maven.assembly.plugin.version>3.2.0</maven.assembly.plugin.version>
+ <maven.checkstyle.plugin.version>3.1.1</maven.checkstyle.plugin.version>
+ <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
+ <maven.deploy.plugin.version>2.8.2</maven.deploy.plugin.version>
+ <maven.pmd.plugin.version>3.14.0</maven.pmd.plugin.version>
+ <maven.source.plugin.version>3.2.1</maven.source.plugin.version>
+ <maven.surefire.plugin.version>3.0.0-M4</maven.surefire.plugin.version>
+ </properties>
+
+ <distributionManagement>
+ <repository>
+ <id>apache.staging</id>
+ <name>Apache Staging Repository</name>
+ <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
+ </repository>
+ </distributionManagement>
+
+ <issueManagement>
+ <system>Jira</system>
+ <url>https://issues.apache.org/jira/projects/IGNITE/issues</url>
+ </issueManagement>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>${jetbrains.annotations.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.databind.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.ivy</groupId>
+ <artifactId>ivy</artifactId>
+ <version>${apache.ivy.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>info.picocli</groupId>
+ <artifactId>picocli-shell-jline3</artifactId>
+ <version>${picocli.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.micronaut</groupId>
+ <artifactId>micronaut-inject-java</artifactId>
+ <version>${micronaut.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.typesafe</groupId>
+ <artifactId>config</artifactId>
+ <version>${typesafe.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.fusesource.jansi</groupId>
+ <artifactId>jansi</artifactId>
+ <version>${jansi.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>info.picocli</groupId>
+ <artifactId>picocli</artifactId>
+ <version>${picocli.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>${javax.validation.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.squareup</groupId>
+ <artifactId>javapoet</artifactId>
+ <version>${javapoet.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>${gson.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.javalin</groupId>
+ <artifactId>javalin</artifactId>
+ <version>${javalin.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+
+ <!-- Test dependencies. -->
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <version>${junit.jupiter.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <version>${junit.jupiter.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>${mockito.framework.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-junit-jupiter</artifactId>
+ <version>${mockito.junit.jupiter.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>io.micronaut.test</groupId>
+ <artifactId>micronaut-test-junit5</artifactId>
+ <version>${micronaut.test.junit5.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.testing.compile</groupId>
+ <artifactId>compile-testing</artifactId>
+ <version>${compile.testing.library.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>fr.inria.gforge.spoon</groupId>
+ <artifactId>spoon-core</artifactId>
+ <version>${spoon.framework.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven.compiler.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${maven.surefire.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>${maven.source.plugin.version}</version>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>${maven.assembly.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>${maven.antrun.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>${maven.deploy.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>com.akathist.maven.plugins.launch4j</groupId>
+ <artifactId>launch4j-maven-plugin</artifactId>
+ <version>${launch.mave.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <version>${apache.rat.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <version>${maven.checkstyle.plugin.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <version>${maven.pmd.plugin.version}</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <rulesets>
+ <ruleset>${project.basedir}/check-rules/pmd-rules.xml</ruleset>
+ </rulesets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/pom.xml b/pom.xml
index f807a76..0e6b050 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,63 +23,16 @@
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache</groupId>
- <artifactId>apache</artifactId>
- <version>23</version>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent</artifactId>
+ <version>1</version>
+ <relativePath>parent</relativePath>
</parent>
- <groupId>org.apache.ignite</groupId>
<artifactId>apache-ignite</artifactId>
<version>3.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <description>Java-based middleware for in-memory processing of big data in a distributed environment.</description>
-
- <licenses>
- <license>
- <name>The Apache Software License, Version 2.0</name>
- <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
- </license>
- </licenses>
-
- <properties>
- <maven.compiler.source>11</maven.compiler.source>
- <maven.compiler.target>11</maven.compiler.target>
- <maven.compiler.release>11</maven.compiler.release>
-
- <!-- Dependencies versions. -->
- <apache.ivy.version>2.5.0</apache.ivy.version>
- <compile.testing.library.version>0.19</compile.testing.library.version>
- <gson.version>2.8.6</gson.version>
- <jackson.databind.version>2.11.1</jackson.databind.version>
- <jansi.version>1.18</jansi.version>
- <javalin.version>3.12.0</javalin.version>
- <javapoet.version>1.13.0</javapoet.version>
- <javax.annotation.api.version>1.3.2</javax.annotation.api.version>
- <javax.validation.version>2.0.1.Final</javax.validation.version>
- <jetbrains.annotations.version>20.1.0</jetbrains.annotations.version>
- <junit.jupiter.version>5.7.0</junit.jupiter.version>
- <log4j.version>1.2.17</log4j.version>
- <logback.version>1.2.3</logback.version>
- <micronaut.version>2.1.2</micronaut.version>
- <micronaut.test.junit5.version>2.3.1</micronaut.test.junit5.version>
- <mockito.framework.version>3.4.6</mockito.framework.version>
- <mockito.junit.jupiter.version>3.3.3</mockito.junit.jupiter.version>
- <picocli.version>4.5.2</picocli.version>
- <slf4j.version>1.7.30</slf4j.version>
- <spoon.framework.version>8.3.0</spoon.framework.version>
- <typesafe.version>1.4.1</typesafe.version>
-
- <!-- Maven plugins. -->
- <apache.rat.plugin.version>0.13</apache.rat.plugin.version>
- <launch.mave.plugin.version>1.7.25</launch.mave.plugin.version>
- <maven.antrun.plugin.version>3.0.0</maven.antrun.plugin.version>
- <maven.assembly.plugin.version>3.2.0</maven.assembly.plugin.version>
- <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
- <maven.deploy.plugin.version>2.8.2</maven.deploy.plugin.version>
- <maven.surefire.plugin.version>3.0.0-M4</maven.surefire.plugin.version>
- </properties>
-
<modules>
<module>modules/cli</module>
<module>modules/cli-common</module>
@@ -87,270 +40,86 @@
<module>modules/configuration-annotation-processor</module>
<module>modules/ignite-runner</module>
</modules>
-
- <distributionManagement>
- <repository>
- <id>apache.staging</id>
- <name>Apache Staging Repository</name>
- <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
- </repository>
- </distributionManagement>
-
- <issueManagement>
- <system>Jira</system>
- <url>https://issues.apache.org/jira/projects/IGNITE/issues</url>
- </issueManagement>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.jetbrains</groupId>
- <artifactId>annotations</artifactId>
- <version>${jetbrains.annotations.version}</version>
- </dependency>
-
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>${logback.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.databind.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.ivy</groupId>
- <artifactId>ivy</artifactId>
- <version>${apache.ivy.version}</version>
- </dependency>
-
- <dependency>
- <groupId>info.picocli</groupId>
- <artifactId>picocli-shell-jline3</artifactId>
- <version>${picocli.version}</version>
- </dependency>
-
- <dependency>
- <groupId>io.micronaut</groupId>
- <artifactId>micronaut-inject-java</artifactId>
- <version>${micronaut.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.typesafe</groupId>
- <artifactId>config</artifactId>
- <version>${typesafe.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.fusesource.jansi</groupId>
- <artifactId>jansi</artifactId>
- <version>${jansi.version}</version>
- </dependency>
-
- <dependency>
- <groupId>info.picocli</groupId>
- <artifactId>picocli</artifactId>
- <version>${picocli.version}</version>
- </dependency>
-
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>${javax.validation.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.squareup</groupId>
- <artifactId>javapoet</artifactId>
- <version>${javapoet.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>${gson.version}</version>
- </dependency>
-
- <dependency>
- <groupId>io.javalin</groupId>
- <artifactId>javalin</artifactId>
- <version>${javalin.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
-
- <!-- Test dependencies. -->
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <version>${junit.jupiter.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <version>${junit.jupiter.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <version>${mockito.framework.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-junit-jupiter</artifactId>
- <version>${mockito.junit.jupiter.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>io.micronaut.test</groupId>
- <artifactId>micronaut-test-junit5</artifactId>
- <version>${micronaut.test.junit5.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4j.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>com.google.testing.compile</groupId>
- <artifactId>compile-testing</artifactId>
- <version>${compile.testing.library.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>fr.inria.gforge.spoon</groupId>
- <artifactId>spoon-core</artifactId>
- <version>${spoon.framework.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
+
<build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven.compiler.plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>${maven.surefire.plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-sources</id>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <version>${apache.rat.plugin.version}</version>
- <executions>
- <execution>
- <id>check-licenses</id>
- <phase>validate</phase>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <excludes>
- <exclude>README.md</exclude>
- <exclude>DEVNOTES.md</exclude>
- <exclude>docs/assets/images/**</exclude>
- <exclude>docs/assets/js/anchor.min.js
- </exclude><!-- Distributed under the MIT license. The original license header is badly formatted. -->
- </excludes>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>${maven.assembly.plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>${maven.antrun.plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <version>${maven.deploy.plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>com.akathist.maven.plugins.launch4j</groupId>
- <artifactId>launch4j-maven-plugin</artifactId>
- <version>${launch.mave.plugin.version}</version>
- </plugin>
- </plugins>
- </pluginManagement>
-
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
-
+ <!--
+ This plugin is used for checking that all files in project are compliant with target licenses headers.
+ Exlusions are possible, but every exclusion should have it's own motivated comment and/or issue key.
+ -->
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
+ <licenses>
+ <license implementation="org.apache.rat.analysis.license.FullTextMatchingLicense">
+ <licenseFamilyCategory>IAL20</licenseFamilyCategory>
+ <licenseFamilyName>Ignite Apache License 2.0</licenseFamilyName>
+ <fullText>
+ 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.
+ </fullText>
+ </license>
+ </licenses>
+ <licenseFamilies>
+ <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+ <familyName>Ignite Apache License 2.0</familyName>
+ </licenseFamily>
+ </licenseFamilies>
+ <excludeSubProjects>false</excludeSubProjects>
+ <excludes>
+ <exclude>**/target/**</exclude> <!-- All generated files -->
+ <exclude>**/*.md</exclude> <!-- Markdown files -->
+ <exclude>docs/assets/images/**</exclude> <!-- SVG images are XML files, but they cannot have license header -->
+ <exclude>docs/assets/js/anchor.min.js</exclude> <!-- Distributed under the MIT license. The original license header is badly formatted -->
+ <exclude>**/*.json</exclude> <!-- Files in JSON format -->
+ <exclude>modules/cli/src/**/resources//builtin_modules.conf</exclude> <!-- CLI configuration files -->
+ <exclude>modules/configuration-annotation-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor</exclude> <!-- ? -->
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <!--
+ This plugin is used to check the code for coding guidelines
+ -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ <configuration>
+ <sourceDirectories>
+ <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+ <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
+ </sourceDirectories>
+ <consoleOutput>true</consoleOutput>
+ <logViolationsToConsole>true</logViolationsToConsole>
+ <failsOnError>true</failsOnError>
+ <failOnViolation>true</failOnViolation>
+ <outputFile>${project.build.directory}/checkstyle.xml</outputFile>
+ <configLocation>${project.basedir}/check-rules/checkstyle-rules.xml</configLocation>
+ <suppressionsLocation>${project.basedir}/check-rules/checkstyle-suppressions.xml</suppressionsLocation>
+ <includeTestSourceDirectory>true</includeTestSourceDirectory>
+ <excludes>**/generated/**/*</excludes>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>com.puppycrawl.tools</groupId>
+ <artifactId>checkstyle</artifactId>
+ <version>${checkstyle.puppycrawl.version}</version>
+ </dependency>
+ </dependencies>
</plugin>
</plugins>
</build>