You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ch...@apache.org on 2022/08/06 11:29:32 UTC
[dolphinscheduler] branch dev updated: [Feature][style] Add spotless maven plugin for automatic style fix. (#11272)
This is an automated email from the ASF dual-hosted git repository.
chufenggao pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 6a02870926 [Feature][style] Add spotless maven plugin for automatic style fix. (#11272)
6a02870926 is described below
commit 6a028709266fdb1f708bf320cd287b03f59d1533
Author: Eric Gao <er...@gmail.com>
AuthorDate: Sat Aug 6 19:29:23 2022 +0800
[Feature][style] Add spotless maven plugin for automatic style fix. (#11272)
* [Feature][style] Add spotless maven plugin for automatic style fix (#10963)
* Fix spotless ratchet configuration
* Remove license-check and decrease line length threshold value
* Update related docs
* Remove checkstyle and add pre-commit hook
* Test updated pre-commit hook
* Replace checkstyle with spotless in CI
* Remove reviewdog
---
.github/actions/reviewdog-setup | 1 -
.github/actions/sanity-check/action.yml | 17 +-
.gitmodules | 3 -
.licenserc.yaml | 1 -
.../en/contribute/development-environment-setup.md | 16 +-
.../zh/contribute/development-environment-setup.md | 13 +
dolphinscheduler-api-test/pom.xml | 32 -
.../plugin/task/jupyter/JupyterTask.java | 15 +-
pom.xml | 857 +++++++++++----------
style/checkstyle.xml | 289 -------
style/pre-commit | 24 +
style/spotless_dolphinscheduler_formatter.xml | 51 ++
12 files changed, 543 insertions(+), 776 deletions(-)
diff --git a/.github/actions/reviewdog-setup b/.github/actions/reviewdog-setup
deleted file mode 160000
index c2fa3e5a37..0000000000
--- a/.github/actions/reviewdog-setup
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit c2fa3e5a37b75a5819e2c8127caec1c2a0d088e8
diff --git a/.github/actions/sanity-check/action.yml b/.github/actions/sanity-check/action.yml
index 01189a9a39..c9ffa8be58 100644
--- a/.github/actions/sanity-check/action.yml
+++ b/.github/actions/sanity-check/action.yml
@@ -34,20 +34,5 @@ runs:
- name: Check License Header
uses: apache/skywalking-eyes@30367d8286e324d5efc58de4c70c37ea3648306d
- - uses: ./.github/actions/reviewdog-setup
- with:
- reviewdog_version: v0.10.2
-
- - shell: bash
- run: ./mvnw -B -q checkstyle:checkstyle-aggregate
-
- shell: bash
- env:
- REVIEWDOG_GITHUB_API_TOKEN: ${{ inputs.token }}
- run: |
- if [[ -n "${{ inputs.token }}" ]]; then
- reviewdog -f=checkstyle \
- -reporter="github-pr-review" \
- -filter-mode="added" \
- -fail-on-error="true" < target/checkstyle-result.xml
- fi
+ run: ./mvnw spotless:check
diff --git a/.gitmodules b/.gitmodules
index e7b1606ceb..3b91677a6a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -21,6 +21,3 @@
[submodule ".github/actions/translate-on-issue"]
path = .github/actions/translate-on-issue
url = https://github.com/xingchun-chen/translation-helper
-[submodule ".github/actions/reviewdog-setup"]
- path = .github/actions/reviewdog-setup
- url = https://github.com/reviewdog/action-setup
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 58543512ae..7793c21a73 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -44,7 +44,6 @@ header:
- '**/NOTICE'
- '**/node_modules/**'
- '.github/actions/comment-on-issue/**'
- - '.github/actions/reviewdog-setup/**'
- '.github/actions/translate-on-issue/**'
- '**/.gitkeep'
diff --git a/docs/docs/en/contribute/development-environment-setup.md b/docs/docs/en/contribute/development-environment-setup.md
index 0940682d6e..31d386f49b 100644
--- a/docs/docs/en/contribute/development-environment-setup.md
+++ b/docs/docs/en/contribute/development-environment-setup.md
@@ -19,7 +19,7 @@ cd dolphinscheduler
git clone git@github.com:apache/dolphinscheduler.git
```
-### compile source code
+### Compile Source Code
Supporting system:
* MacOS
@@ -27,6 +27,20 @@ Supporting system:
Run `mvn clean install -Prelease -Dmaven.test.skip=true`
+### Code Style
+
+DolphinScheduler uses `Spotless` for code style and formatting checks.
+You could run the following command and `Spotless` will automatically fix
+the code style and formatting errors for you:
+
+```shell
+./mvnw spotless:apply
+```
+
+You could copy the `pre-commit hook` file `/style/pre-commit` to your `.git/hooks/`
+directory so that every time you commit your code with `git commit`, `Spotless` will automatically
+fix things for you.
+
## Docker image build
DolphinScheduler will release new Docker images after it released, you could find them in [Docker Hub](https://hub.docker.com/search?q=DolphinScheduler).
diff --git a/docs/docs/zh/contribute/development-environment-setup.md b/docs/docs/zh/contribute/development-environment-setup.md
index 5b2dbe0595..433e6bfc14 100644
--- a/docs/docs/zh/contribute/development-environment-setup.md
+++ b/docs/docs/zh/contribute/development-environment-setup.md
@@ -27,6 +27,19 @@ git clone git@github.com:apache/dolphinscheduler.git
运行 `mvn clean install -Prelease -Dmaven.test.skip=true`
+
+### 代码风格
+
+DolphinScheduler使用`Spotless`检查并修复代码风格和格式问题。
+您可以执行如下的命令,`Spotless`将会为您自动检查并修复代码风格和格式问题。
+
+```shell
+./mvnw spotless:apply
+```
+
+您可将`/style/pre-commit`目录下的`pre-commit hook`文件拷贝到您的`.git/hooks/`
+目录下,这样您每次使用`git commit`命令时,`Spotless`将会自动为您修复代码风格和格式问题。
+
## Docker镜像构建
DolphinScheduler 每次发版都会同时发布 Docker 镜像,你可以在 [Docker Hub](https://hub.docker.com/search?q=DolphinScheduler) 中找到这些镜像
diff --git a/dolphinscheduler-api-test/pom.xml b/dolphinscheduler-api-test/pom.xml
index 4c9b4cef31..5a246e5b87 100644
--- a/dolphinscheduler-api-test/pom.xml
+++ b/dolphinscheduler-api-test/pom.xml
@@ -138,38 +138,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>${checkstyle.version}</version>
- <dependencies>
- <dependency>
- <groupId>com.puppycrawl.tools</groupId>
- <artifactId>checkstyle</artifactId>
- <version>8.45</version>
- </dependency>
- </dependencies>
- <configuration>
- <consoleOutput>true</consoleOutput>
- <encoding>UTF-8</encoding>
- <configLocation>../style/checkstyle.xml</configLocation>
- <failOnViolation>true</failOnViolation>
- <violationSeverity>warning</violationSeverity>
- <includeTestSourceDirectory>true</includeTestSourceDirectory>
- <sourceDirectories>
- <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
- </sourceDirectories>
- <excludes>**\/generated-sources\/</excludes>
- </configuration>
- <executions>
- <execution>
- <phase>compile</phase>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
</project>
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-jupyter/src/main/java/org/apache/dolphinscheduler/plugin/task/jupyter/JupyterTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-jupyter/src/main/java/org/apache/dolphinscheduler/plugin/task/jupyter/JupyterTask.java
index 0ce6052bdd..ea3bf750c6 100644
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-jupyter/src/main/java/org/apache/dolphinscheduler/plugin/task/jupyter/JupyterTask.java
+++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-jupyter/src/main/java/org/apache/dolphinscheduler/plugin/task/jupyter/JupyterTask.java
@@ -17,25 +17,23 @@
package org.apache.dolphinscheduler.plugin.task.jupyter;
-
+import org.apache.dolphinscheduler.spi.utils.JSONUtils;
+import org.apache.dolphinscheduler.spi.utils.PropertyUtils;
+import org.apache.dolphinscheduler.spi.utils.StringUtils;
+import org.apache.dolphinscheduler.plugin.task.api.parser.ParamUtils;
+import org.apache.dolphinscheduler.plugin.task.api.parser.ParameterUtils;
import org.apache.dolphinscheduler.plugin.task.api.AbstractTaskExecutor;
import org.apache.dolphinscheduler.plugin.task.api.ShellCommandExecutor;
import org.apache.dolphinscheduler.plugin.task.api.TaskConstants;
+
import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
import org.apache.dolphinscheduler.plugin.task.api.model.Property;
import org.apache.dolphinscheduler.plugin.task.api.model.TaskResponse;
import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
-import org.apache.dolphinscheduler.plugin.task.api.parser.ParamUtils;
-import org.apache.dolphinscheduler.plugin.task.api.parser.ParameterUtils;
-import org.apache.dolphinscheduler.plugin.task.api.utils.MapUtils;
import org.apache.dolphinscheduler.spi.utils.DateUtils;
-import org.apache.dolphinscheduler.spi.utils.JSONUtils;
-import org.apache.dolphinscheduler.spi.utils.PropertyUtils;
-import org.apache.dolphinscheduler.spi.utils.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -152,7 +150,6 @@ public class JupyterTask extends AbstractTaskExecutor {
return command;
}
-
/**
* build jupyter parameterization
*
diff --git a/pom.xml b/pom.xml
index 8cfcec8e77..76f697c4df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,38 +16,49 @@
~ 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">
+ 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>25</version>
+ </parent>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler</artifactId>
<version>dev-SNAPSHOT</version>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
- <url>https://dolphinscheduler.apache.org</url>
<description>Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system, dedicated
to solving the complex dependencies in data processing, making the scheduling system out of the box for data
- processing.
- </description>
- <scm>
- <connection>scm:git:https://github.com/apache/dolphinscheduler.git</connection>
- <developerConnection>scm:git:https://github.com/apache/dolphinscheduler.git</developerConnection>
- <url>https://github.com/apache/dolphinscheduler</url>
- <tag>HEAD</tag>
- </scm>
- <mailingLists>
- <mailingList>
- <name>DolphinScheduler Developer List</name>
- <post>dev@dolphinscheduler.apache.org</post>
- <subscribe>dev-subscribe@dolphinscheduler.apache.org</subscribe>
- <unsubscribe>dev-unsubscribe@dolphinscheduler.apache.org</unsubscribe>
- </mailingList>
- </mailingLists>
- <parent>
- <groupId>org.apache</groupId>
- <artifactId>apache</artifactId>
- <version>25</version>
- </parent>
-
+ processing.</description>
+
+ <modules>
+ <module>dolphinscheduler-bom</module>
+ <module>dolphinscheduler-alert</module>
+ <module>dolphinscheduler-spi</module>
+ <module>dolphinscheduler-registry</module>
+ <module>dolphinscheduler-task-plugin</module>
+ <module>dolphinscheduler-server</module>
+ <module>dolphinscheduler-common</module>
+ <module>dolphinscheduler-api</module>
+ <module>dolphinscheduler-dao</module>
+ <module>dolphinscheduler-dist</module>
+ <module>dolphinscheduler-remote</module>
+ <module>dolphinscheduler-service</module>
+ <module>dolphinscheduler-microbench</module>
+ <module>dolphinscheduler-data-quality</module>
+ <module>dolphinscheduler-standalone-server</module>
+ <module>dolphinscheduler-datasource-plugin</module>
+ <module>dolphinscheduler-python</module>
+ <module>dolphinscheduler-meter</module>
+ <module>dolphinscheduler-master</module>
+ <module>dolphinscheduler-worker</module>
+ <module>dolphinscheduler-log-server</module>
+ <module>dolphinscheduler-tools</module>
+ <module>dolphinscheduler-ui</module>
+ <module>dolphinscheduler-scheduler-plugin</module>
+ </modules>
+
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -55,7 +66,6 @@
<java.version>1.8</java.version>
<junit.version>4.12</junit.version>
<spotbugs.version>3.1.12</spotbugs.version>
- <checkstyle.version>3.1.2</checkstyle.version>
<maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
@@ -65,6 +75,7 @@
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
<maven-shade-plugin.version>3.2.1</maven-shade-plugin.version>
<rpm-maven-plugion.version>2.2.0</rpm-maven-plugion.version>
+ <spotless.version>2.23.0</spotless.version>
<jacoco.version>0.8.7</jacoco.version>
<maven.deploy.skip>false</maven.deploy.skip>
<cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
@@ -80,373 +91,11 @@
<docker.tag>${project.version}</docker.tag>
<docker.build.skip>true</docker.build.skip>
<docker.push.skip>true</docker.push.skip>
-
+
<python.sign.skip>true</python.sign.skip>
<skipDepCheck>true</skipDepCheck>
</properties>
-
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>rpm-maven-plugin</artifactId>
- <version>${rpm-maven-plugion.version}</version>
- <inherited>false</inherited>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- <testSource>${java.version}</testSource>
- <testTarget>${java.version}</testTarget>
- </configuration>
- <version>${maven-compiler-plugin.version}</version>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-release-plugin</artifactId>
- <version>${maven-release-plugin.version}</version>
- <configuration>
- <tagNameFormat>@{project.version}</tagNameFormat>
- </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-javadoc-plugin</artifactId>
- <version>${maven-javadoc-plugin.version}</version>
- <configuration>
- <source>8</source>
- <failOnError>false</failOnError>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>${maven-dependency-plugin.version}</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>${maven-shade-plugin.version}</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar-plugin.version}</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>exec-maven-plugin</artifactId>
- <version>${exec-maven-plugin.version}</version>
- <executions>
- <execution>
- <id>docker-build</id>
- <phase>package</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <skip>${docker.build.skip}</skip>
- <executable>docker</executable>
- <workingDirectory>${project.basedir}</workingDirectory>
- <arguments>
- <argument>build</argument>
- <argument>--no-cache</argument>
- <argument>-t</argument>
- <argument>${docker.hub}/${docker.repo}:${docker.tag}</argument>
- <argument>-t</argument>
- <argument>${docker.hub}/${docker.repo}:latest</argument>
- <argument>${project.basedir}</argument>
- <argument>--file=src/main/docker/Dockerfile</argument>
- </arguments>
- </configuration>
- </execution>
- <execution>
- <id>docker-push</id>
- <phase>deploy</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <skip>${docker.push.skip}</skip>
- <environmentVariables>
- <DOCKER_BUILDKIT>1</DOCKER_BUILDKIT>
- </environmentVariables>
- <executable>docker</executable>
- <workingDirectory>${project.basedir}</workingDirectory>
- <arguments>
- <argument>buildx</argument>
- <argument>build</argument>
- <argument>--platform</argument>
- <argument>linux/amd64,linux/arm64</argument>
- <argument>--no-cache</argument>
- <argument>--push</argument>
- <argument>-t</argument>
- <argument>${docker.hub}/${docker.repo}:${docker.tag}</argument>
- <argument>-t</argument>
- <argument>${docker.hub}/${docker.repo}:latest</argument>
- <argument>${project.basedir}</argument>
- <argument>--file=src/main/docker/Dockerfile</argument>
- </arguments>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.owasp</groupId>
- <artifactId>dependency-check-maven</artifactId>
- <version>${owasp-dependency-check-maven.version}</version>
- <configuration>
- <skip>${skipDepCheck}</skip>
- <skipProvidedScope>true</skipProvidedScope>
- <skipRuntimeScope>true</skipRuntimeScope>
- <skipSystemScope>true</skipSystemScope>
- <failBuildOnCVSS>7</failBuildOnCVSS>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>aggregate</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
-
- <plugins>
- <plugin>
- <groupId>org.owasp</groupId>
- <artifactId>dependency-check-maven</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>${maven-javadoc-plugin.version}</version>
- <executions>
- <execution>
- <id>attach-javadocs</id>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <aggregate>true</aggregate>
- <charset>${project.build.sourceEncoding}</charset>
- <encoding>${project.build.sourceEncoding}</encoding>
- <docencoding>${project.build.sourceEncoding}</docencoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-release-plugin</artifactId>
- <version>${maven-release-plugin.version}</version>
- <configuration>
- <autoVersionSubmodules>true</autoVersionSubmodules>
- <tagNameFormat>@{project.version}</tagNameFormat>
- <tagBase>${project.version}</tagBase>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.scm</groupId>
- <artifactId>maven-scm-provider-jgit</artifactId>
- <version>1.9.5</version>
- </dependency>
- </dependencies>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven-compiler-plugin.version}</version>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- <encoding>${project.build.sourceEncoding}</encoding>
- <skip>false</skip><!--not skip compile test classes-->
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>${maven-surefire-plugin.version}</version>
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.surefire</groupId>
- <artifactId>surefire-junit4</artifactId>
- <version>${maven-surefire-plugin.version}</version>
- </dependency>
- </dependencies>
- <configuration>
- <systemPropertyVariables>
- <jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
- </systemPropertyVariables>
- </configuration>
- </plugin>
-
- <!-- jenkins plugin jacoco report-->
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>${jacoco.version}</version>
- <configuration>
- <skip>${jacoco.skip}</skip>
- <dataFile>${project.build.directory}/jacoco.exec</dataFile>
- </configuration>
- <executions>
- <execution>
- <id>default-instrument</id>
- <goals>
- <goal>instrument</goal>
- </goals>
- </execution>
- <execution>
- <id>default-restore-instrumented-classes</id>
- <goals>
- <goal>restore-instrumented-classes</goal>
- </goals>
- <configuration>
- <excludes>com/github/dreamhead/moco/*</excludes>
- </configuration>
- </execution>
- <execution>
- <id>default-report</id>
- <goals>
- <goal>report</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs-maven-plugin</artifactId>
- <version>${spotbugs.version}</version>
- <configuration>
- <xmlOutput>true</xmlOutput>
- <threshold>medium</threshold>
- <effort>default</effort>
- <excludeFilterFile>dev-config/spotbugs-exclude.xml</excludeFilterFile>
- <failOnError>true</failOnError>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs</artifactId>
- <version>4.0.0-beta4</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>${checkstyle.version}</version>
- <dependencies>
- <dependency>
- <groupId>com.puppycrawl.tools</groupId>
- <artifactId>checkstyle</artifactId>
- <version>8.45</version>
- </dependency>
- </dependencies>
- <configuration>
- <consoleOutput>true</consoleOutput>
- <encoding>UTF-8</encoding>
- <configLocation>style/checkstyle.xml</configLocation>
- <failOnViolation>true</failOnViolation>
- <violationSeverity>warning</violationSeverity>
- <includeTestSourceDirectory>true</includeTestSourceDirectory>
- <sourceDirectories>
- <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
- </sourceDirectories>
- <excludes>**\/generated-sources\/</excludes>
- </configuration>
- <executions>
- <execution>
- <phase>compile</phase>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- <version>${cobertura-maven-plugin.version}</version>
- <configuration>
- <check>
- </check>
- <aggregate>true</aggregate>
- <outputDirectory>./target/cobertura</outputDirectory>
- <encoding>${project.build.sourceEncoding}</encoding>
- <quiet>true</quiet>
- <format>xml</format>
- <instrumentation>
- <ignoreTrivial>true</ignoreTrivial>
- </instrumentation>
- </configuration>
- </plugin>
- <plugin>
- <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-dependency-plugin</artifactId>
- <version>${maven-dependency-plugin.version}</version>
- <executions>
- <execution>
- <id>analyze-dependencies</id>
- <goals>
- <goal>analyze-only</goal>
- </goals>
- <configuration>
- <ignoredDependencies>
- <!-- Because of SpringBoot auto-configurations, the configuration is happening outside of your application code, so Maven believes these dependencies to be unused -->
- <!-- Static code analysis tools like (maven-dependency-plugin) can not detect runtime dependencies, so you should instruct them about runtime dependencies -->
- <!-- https://stackoverflow.com/questions/37528928/spring-boot-core-dependencies-seen-as-unused-by-maven-dependency-plugin -->
- <ignoredDependency>org.springframework*:*</ignoredDependency>
- <ignoredDependency>org.apache.dolphinscheduler:dolphinscheduler-meter</ignoredDependency>
- </ignoredDependencies>
- <ignoreNonCompile>true</ignoreNonCompile>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- <profiles>
- <profile>
- <id>docker</id>
- <properties>
- <docker.build.skip>false</docker.build.skip>
- <docker.push.skip>false</docker.push.skip>
- </properties>
- </profile>
- </profiles>
-
+
<dependencyManagement>
<dependencies>
<dependency>
@@ -524,13 +173,13 @@
<artifactId>dolphinscheduler-spi</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-data-quality</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-python</artifactId>
@@ -611,7 +260,7 @@
<artifactId>dolphinscheduler-registry-mysql</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-scheduler-api</artifactId>
@@ -622,7 +271,7 @@
<artifactId>dolphinscheduler-scheduler-quartz</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-datasource-all</artifactId>
@@ -633,7 +282,7 @@
<artifactId>dolphinscheduler-datasource-api</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-task-api</artifactId>
@@ -649,7 +298,7 @@
<artifactId>dolphinscheduler-task-all</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-ui</artifactId>
@@ -661,9 +310,9 @@
<version>${project.version}</version>
</dependency>
</dependencies>
-
+
</dependencyManagement>
-
+
<dependencies>
<!--
NOTE: only development / test phase dependencies (scope = test / provided)
@@ -721,31 +370,391 @@
<scope>test</scope>
</dependency>
</dependencies>
-
- <modules>
- <module>dolphinscheduler-bom</module>
- <module>dolphinscheduler-alert</module>
- <module>dolphinscheduler-spi</module>
- <module>dolphinscheduler-registry</module>
- <module>dolphinscheduler-task-plugin</module>
- <module>dolphinscheduler-server</module>
- <module>dolphinscheduler-common</module>
- <module>dolphinscheduler-api</module>
- <module>dolphinscheduler-dao</module>
- <module>dolphinscheduler-dist</module>
- <module>dolphinscheduler-remote</module>
- <module>dolphinscheduler-service</module>
- <module>dolphinscheduler-microbench</module>
- <module>dolphinscheduler-data-quality</module>
- <module>dolphinscheduler-standalone-server</module>
- <module>dolphinscheduler-datasource-plugin</module>
- <module>dolphinscheduler-python</module>
- <module>dolphinscheduler-meter</module>
- <module>dolphinscheduler-master</module>
- <module>dolphinscheduler-worker</module>
- <module>dolphinscheduler-log-server</module>
- <module>dolphinscheduler-tools</module>
- <module>dolphinscheduler-ui</module>
- <module>dolphinscheduler-scheduler-plugin</module>
- </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>rpm-maven-plugin</artifactId>
+ <version>${rpm-maven-plugion.version}</version>
+ <inherited>false</inherited>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ <configuration>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ <testSource>${java.version}</testSource>
+ <testTarget>${java.version}</testTarget>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>${maven-release-plugin.version}</version>
+ <configuration>
+ <tagNameFormat>@{project.version}</tagNameFormat>
+ </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-javadoc-plugin</artifactId>
+ <version>${maven-javadoc-plugin.version}</version>
+ <configuration>
+ <source>8</source>
+ <failOnError>false</failOnError>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>${maven-dependency-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>${maven-shade-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>${maven-jar-plugin.version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>${exec-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>docker-build</id>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <skip>${docker.build.skip}</skip>
+ <executable>docker</executable>
+ <workingDirectory>${project.basedir}</workingDirectory>
+ <arguments>
+ <argument>build</argument>
+ <argument>--no-cache</argument>
+ <argument>-t</argument>
+ <argument>${docker.hub}/${docker.repo}:${docker.tag}</argument>
+ <argument>-t</argument>
+ <argument>${docker.hub}/${docker.repo}:latest</argument>
+ <argument>${project.basedir}</argument>
+ <argument>--file=src/main/docker/Dockerfile</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>docker-push</id>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <phase>deploy</phase>
+ <configuration>
+ <skip>${docker.push.skip}</skip>
+ <environmentVariables>
+ <DOCKER_BUILDKIT>1</DOCKER_BUILDKIT>
+ </environmentVariables>
+ <executable>docker</executable>
+ <workingDirectory>${project.basedir}</workingDirectory>
+ <arguments>
+ <argument>buildx</argument>
+ <argument>build</argument>
+ <argument>--platform</argument>
+ <argument>linux/amd64,linux/arm64</argument>
+ <argument>--no-cache</argument>
+ <argument>--push</argument>
+ <argument>-t</argument>
+ <argument>${docker.hub}/${docker.repo}:${docker.tag}</argument>
+ <argument>-t</argument>
+ <argument>${docker.hub}/${docker.repo}:latest</argument>
+ <argument>${project.basedir}</argument>
+ <argument>--file=src/main/docker/Dockerfile</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.owasp</groupId>
+ <artifactId>dependency-check-maven</artifactId>
+ <version>${owasp-dependency-check-maven.version}</version>
+ <configuration>
+ <skip>${skipDepCheck}</skip>
+ <skipProvidedScope>true</skipProvidedScope>
+ <skipRuntimeScope>true</skipRuntimeScope>
+ <skipSystemScope>true</skipSystemScope>
+ <failBuildOnCVSS>7</failBuildOnCVSS>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>aggregate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ <plugins>
+ <plugin>
+ <groupId>org.owasp</groupId>
+ <artifactId>dependency-check-maven</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${maven-javadoc-plugin.version}</version>
+ <configuration>
+ <aggregate>true</aggregate>
+ <charset>${project.build.sourceEncoding}</charset>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <docencoding>${project.build.sourceEncoding}</docencoding>
+ </configuration>
+ <executions>
+ <execution>
+ <id>attach-javadocs</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>${maven-release-plugin.version}</version>
+ <configuration>
+ <autoVersionSubmodules>true</autoVersionSubmodules>
+ <tagNameFormat>@{project.version}</tagNameFormat>
+ <tagBase>${project.version}</tagBase>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-jgit</artifactId>
+ <version>1.9.5</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ <configuration>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <skip>false</skip>
+ <!--not skip compile test classes-->
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${maven-surefire-plugin.version}</version>
+ <configuration>
+ <systemPropertyVariables>
+ <jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
+ </systemPropertyVariables>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-junit4</artifactId>
+ <version>${maven-surefire-plugin.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <!-- jenkins plugin jacoco report-->
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <version>${jacoco.version}</version>
+ <configuration>
+ <skip>${jacoco.skip}</skip>
+ <dataFile>${project.build.directory}/jacoco.exec</dataFile>
+ </configuration>
+ <executions>
+ <execution>
+ <id>default-instrument</id>
+ <goals>
+ <goal>instrument</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>default-restore-instrumented-classes</id>
+ <goals>
+ <goal>restore-instrumented-classes</goal>
+ </goals>
+ <configuration>
+ <excludes>com/github/dreamhead/moco/*</excludes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>default-report</id>
+ <goals>
+ <goal>report</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-maven-plugin</artifactId>
+ <version>${spotbugs.version}</version>
+ <configuration>
+ <xmlOutput>true</xmlOutput>
+ <threshold>medium</threshold>
+ <effort>default</effort>
+ <excludeFilterFile>dev-config/spotbugs-exclude.xml</excludeFilterFile>
+ <failOnError>true</failOnError>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs</artifactId>
+ <version>4.0.0-beta4</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>com.diffplug.spotless</groupId>
+ <artifactId>spotless-maven-plugin</artifactId>
+ <version>${spotless.version}</version>
+ <configuration>
+ <!-- optional: limit format enforcement to just the files changed by this feature branch -->
+ <ratchetFrom>HEAD</ratchetFrom>
+ <java>
+ <eclipse>
+ <file>style/spotless_dolphinscheduler_formatter.xml</file>
+ </eclipse>
+ </java>
+ <pom>
+ <sortPom>
+ <encoding>UTF-8</encoding>
+ <nrOfIndentSpace>4</nrOfIndentSpace>
+ <keepBlankLines>true</keepBlankLines>
+ <indentBlankLines>true</indentBlankLines>
+ <indentSchemaLocation>true</indentSchemaLocation>
+ <spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
+ <sortModules>false</sortModules>
+ <sortExecutions>false</sortExecutions>
+ <predefinedSortOrder>custom_1</predefinedSortOrder>
+ <expandEmptyElements>false</expandEmptyElements>
+ <sortProperties>false</sortProperties>
+ </sortPom>
+ <replace>
+ <name>Leading blank line</name>
+ <search>project</search>
+ <replacement>project</replacement>
+ </replace>
+ </pom>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ <phase>compile</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ <version>${cobertura-maven-plugin.version}</version>
+ <configuration>
+ <check />
+ <aggregate>true</aggregate>
+ <outputDirectory>./target/cobertura</outputDirectory>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <quiet>true</quiet>
+ <format>xml</format>
+ <instrumentation>
+ <ignoreTrivial>true</ignoreTrivial>
+ </instrumentation>
+ </configuration>
+ </plugin>
+ <plugin>
+ <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-dependency-plugin</artifactId>
+ <version>${maven-dependency-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>analyze-dependencies</id>
+ <goals>
+ <goal>analyze-only</goal>
+ </goals>
+ <configuration>
+ <ignoredDependencies>
+ <!-- Because of SpringBoot auto-configurations, the configuration is happening outside of your application code, so Maven believes these dependencies to be unused -->
+ <!-- Static code analysis tools like (maven-dependency-plugin) can not detect runtime dependencies, so you should instruct them about runtime dependencies -->
+ <!-- https://stackoverflow.com/questions/37528928/spring-boot-core-dependencies-seen-as-unused-by-maven-dependency-plugin -->
+ <ignoredDependency>org.springframework*:*</ignoredDependency>
+ <ignoredDependency>org.apache.dolphinscheduler:dolphinscheduler-meter</ignoredDependency>
+ </ignoredDependencies>
+ <ignoreNonCompile>true</ignoreNonCompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <url>https://dolphinscheduler.apache.org</url>
+ <mailingLists>
+ <mailingList>
+ <name>DolphinScheduler Developer List</name>
+ <subscribe>dev-subscribe@dolphinscheduler.apache.org</subscribe>
+ <unsubscribe>dev-unsubscribe@dolphinscheduler.apache.org</unsubscribe>
+ <post>dev@dolphinscheduler.apache.org</post>
+ </mailingList>
+ </mailingLists>
+ <scm>
+ <connection>scm:git:https://github.com/apache/dolphinscheduler.git</connection>
+ <developerConnection>scm:git:https://github.com/apache/dolphinscheduler.git</developerConnection>
+ <url>https://github.com/apache/dolphinscheduler</url>
+ <tag>HEAD</tag>
+ </scm>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <properties>
+ <docker.build.skip>false</docker.build.skip>
+ <docker.push.skip>false</docker.push.skip>
+ </properties>
+ </profile>
+ </profiles>
</project>
diff --git a/style/checkstyle.xml b/style/checkstyle.xml
deleted file mode 100644
index 07a3aaf570..0000000000
--- a/style/checkstyle.xml
+++ /dev/null
@@ -1,289 +0,0 @@
-<?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://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
-
-<module name="Checker">
- <property name="charset" value="UTF-8"/>
-
- <property name="severity" value="warning"/>
-
- <module name="SuppressWarningsFilter"/>
-
- <property name="fileExtensions" value="java, properties, xml"/>
-
- <module name="FileTabCharacter">
- <property name="eachLine" value="true"/>
- </module>
-
- <module name="LineLength">
- <property name="max" value="200"/>
- <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
- </module>
-
- <module name="RegexpSingleline">
- <property name="format" value="System\.out\.println"/>
- <property name="message" value="Prohibit invoking System.out.println in source code !"/>
- </module>
-
- <module name="TreeWalker">
-
- <module name="SuppressWarningsHolder"/>
-
- <module name="OuterTypeFilename">
- <property name="severity" value="error"/>
- </module>
-
- <module name="OneTopLevelClass">
- <property name="severity" value="error"/>
- </module>
-
- <module name="NoLineWrap">
- <property name="severity" value="error"/>
- </module>
-
- <module name="NeedBraces">
- <property name="severity" value="error"/>
- </module>
-
- <module name="LeftCurly">
- <property name="severity" value="error"/>
- </module>
-
- <module name="AvoidNestedBlocks">
- <property name="allowInSwitchCase" value="true"/>
- </module>
-
- <module name="IllegalTokenText">
- <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
- <property name="format"
- value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
- <property name="message"
- value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
- </module>
-
- <module name="AvoidEscapedUnicodeCharacters">
- <property name="allowEscapesForControlCharacters" value="true"/>
- <property name="allowByTailComment" value="true"/>
- <property name="allowNonPrintableEscapes" value="true"/>
- </module>
-
- <module name="EmptyBlock">
- <property name="option" value="TEXT"/>
- <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
- </module>
-
- <module name="WhitespaceAround">
- <property name="allowEmptyConstructors" value="true"/>
- <property name="allowEmptyMethods" value="true"/>
- <property name="allowEmptyTypes" value="true"/>
- <property name="allowEmptyLoops" value="true"/>
- <message key="ws.notFollowed"
- value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
- <message key="ws.notPreceded"
- value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
- </module>
-
- <module name="OneStatementPerLine"/>
-
- <module name="MultipleVariableDeclarations"/>
-
- <module name="ArrayTypeStyle"/>
-
- <module name="MissingSwitchDefault"/>
-
- <module name="FallThrough"/>
-
- <module name="UpperEll"/>
-
- <module name="ModifierOrder"/>
-
- <module name="EmptyLineSeparator">
- <property name="allowMultipleEmptyLines" value="false"/>
- <property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
- <property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF,
- INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF,
- CTOR_DEF"/>
- </module>
-
- <module name="PackageName">
- <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
- <message key="name.invalidPattern"
- value="Package name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="TypeName">
- <message key="name.invalidPattern"
- value="Type name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="MemberName">
- <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
- <message key="name.invalidPattern"
- value="Member name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="ParameterName">
- <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
- <message key="name.invalidPattern"
- value="Parameter name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="CatchParameterName">
- <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
- <message key="name.invalidPattern"
- value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="LocalVariableName">
- <property name="tokens" value="VARIABLE_DEF"/>
- <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
- <message key="name.invalidPattern"
- value="Local variable name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="ClassTypeParameterName">
- <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
- <message key="name.invalidPattern"
- value="Class type name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="MethodTypeParameterName">
- <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
- <message key="name.invalidPattern"
- value="Method type name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="InterfaceTypeParameterName">
- <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
- <message key="name.invalidPattern"
- value="Interface type name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="NoFinalizer"/>
-
- <module name="GenericWhitespace">
- <message key="ws.followed"
- value="GenericWhitespace ''{0}'' is followed by whitespace."/>
- <message key="ws.preceded"
- value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
- <message key="ws.illegalFollow"
- value="GenericWhitespace ''{0}'' should followed by whitespace."/>
- <message key="ws.notPreceded"
- value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
- </module>
-
- <module name="Indentation">
- <property name="basicOffset" value="4"/>
- <property name="braceAdjustment" value="0"/>
- <property name="caseIndent" value="4"/>
- <property name="throwsIndent" value="2"/>
- <property name="lineWrappingIndentation" value="4"/>
- <property name="arrayInitIndent" value="4"/>
- </module>
-
- <module name="IllegalImport">
- <property name="regexp" value="true"/>
- <property name="illegalPkgs"
- value="^com\.google\.api\.client\.repackaged,
- ^avro\.shaded, ^org\.apache\.hadoop\.hbase\.shaded,
- ^org\.apache\.hadoop\.shaded,
- ^javax\.ws\.rs\.ext,
- ^cc\.concurrent\.mango\.util\.concurrent,
- ^org\.apache\.curator-test\.shaded,
- ^com\.sun\.istack,
- ^org\.jetbrains\.annotations,
- ^jline\.internal,
- ^com\.cronutils\.utils,
- ^javax\.ws\.rs\.ext,
- ^org\.jboss\.netty\.util\.internal,
- ^com\.sun\.javafx,
- ^io\.reactivex\.annotations,
- ^org\.codehaus\.jackson"/>
- <property name="illegalClasses"
- value="^java\.util\.logging\.Logging,
- ^sun\.misc\.BASE64Encoder,
- ^sun\.misc\.BASE64Decoder,
- ^jdk\.internal\.jline\.internal\.Nullable"/>
- </module>
-
- <module name="RedundantImport"/>
-
- <module name="UnusedImports"/>
-
- <module name="ImportOrder">
- <property name="staticGroups" value="org.apache.dolphinscheduler,org.apache,java,javax,org,com"/>
- <property name="separatedStaticGroups" value="true"/>
-
- <property name="groups" value="org.apache.dolphinscheduler,org.apache,java,javax,org,com"/>
- <property name="ordered" value="true"/>
- <property name="separated" value="true"/>
- <property name="option" value="top"/>
- <property name="sortStaticImportsAlphabetically" value="true"/>
- </module>
-
- <module name="NoWhitespaceBefore">
- <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
- <property name="allowLineBreaks" value="true"/>
- </module>
-
- <module name="ParenPad"/>
-
- <module name="OperatorWrap">
- <property name="option" value="NL"/>
- <property name="tokens"
- value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
- </module>
-
- <module name="AnnotationLocation">
- <property name="allowSamelineMultipleAnnotations" value="false"/>
- <property name="allowSamelineSingleParameterlessAnnotation"
- value="false"/>
- <property name="allowSamelineParameterizedAnnotation" value="true"/>
- <property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
- </module>
-
- <module name="MethodName">
- <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
- <message key="name.invalidPattern"
- value="Method name ''{0}'' must match pattern ''{1}''."/>
- </module>
-
- <module name="EmptyCatchBlock">
- <property name="exceptionVariableName" value="expected"/>
- </module>
-
- <module name="CommentsIndentation"/>
-
- <module name="EmptyStatement">
- <property name="severity" value="error"/>
- </module>
-
- <module name="JavadocStyle">
- <property name="endOfSentenceFormat" value=""/>
- </module>
-
- <module name="JavadocType">
- <property name="scope" value="protected"/>
- <property name="allowMissingParamTags" value="true"/>
- </module>
-
- <module name="AvoidStarImport"/>
-
- </module>
-</module>
diff --git a/style/pre-commit b/style/pre-commit
new file mode 100644
index 0000000000..89ef99f755
--- /dev/null
+++ b/style/pre-commit
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# 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.
+#
+
+# A hook script to automatically fix code style and formatting errors with spotless
+if ./mvnw spotless:check; then
+ exit 0
+fi
+./mvnw spotless:apply
+exit 1
diff --git a/style/spotless_dolphinscheduler_formatter.xml b/style/spotless_dolphinscheduler_formatter.xml
new file mode 100644
index 0000000000..0e45f7be39
--- /dev/null
+++ b/style/spotless_dolphinscheduler_formatter.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+/**
+ * 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.
+ */
+-->
+<profiles version="13">
+ <profile kind="CodeFormatterProfile" name="'DolphinScheduler Apache Current'" version="13">
+ <setting id="org.eclipse.jdt.core.compiler.source" value="1.8" />
+ <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.8" />
+ <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8" />
+ <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false" />
+ <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4" />
+ <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120" />
+ <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120" />
+ <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space" />
+ <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="1" />
+ <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="1" />
+ <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false" />
+ <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false" />
+ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert" />
+ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16" />
+ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert" />
+ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16" />
+ <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1" />
+ <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="160" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="10" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="106" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="106" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="106" />
+ <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call.count_dependent" value="16|5|80" />
+ </profile>
+</profiles>