This is an automated email from the ASF dual-hosted git repository. fanjia pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/seatunnel-tools.git
commit eb9f464f3b4b798ad845bd5945a84604def82554 Author: Jia Fan <[email protected]> AuthorDate: Thu Aug 14 15:55:28 2025 +0800 Init commit --- .asf.yaml | 56 ++++ .github/ISSUE_TEMPLATE/bug-report.yml | 141 ++++++++ .github/ISSUE_TEMPLATE/feature-request.yml | 83 +++++ .github/ISSUE_TEMPLATE/umbrella.yml | 80 +++++ .github/PULL_REQUEST_TEMPLATE.md | 51 +++ .github/workflows/approve-label-trigger.yml | 28 ++ .github/workflows/approve-label.yml | 64 ++++ .github/workflows/backend.yml | 56 ++++ .github/workflows/build_main.yml | 33 ++ .github/workflows/stale.yml | 55 ++++ .gitignore | 62 ++++ .gitmodules | 3 + .idea/icon.png | Bin 0 -> 211862 bytes .idea/vcs.xml | 32 ++ .mvn/wrapper/maven-wrapper.properties | 19 ++ README.md | 5 + mvnw | 316 ++++++++++++++++++ mvnw.cmd | 188 +++++++++++ pom.xml | 477 ++++++++++++++++++++++++++++ seatunnel | 1 + 20 files changed, 1750 insertions(+) diff --git a/.asf.yaml b/.asf.yaml new file mode 100644 index 0000000..8c66baa --- /dev/null +++ b/.asf.yaml @@ -0,0 +1,56 @@ +# 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. +# + +github: + description: SeaTunnel is a multimodal, high-performance, distributed, massive data integration tool. + homepage: https://seatunnel.apache.org/ + labels: + - data-integration + - multimodal + - llm + - embeddings + - change-data-capture + - cdc + - high-performance + - offline + - real-time + - batch + - streaming + - data-ingestion + - apache + - elt + features: + wiki: true + issues: false + projects: true + enabled_merge_buttons: + squash: true + merge: false + rebase: false + protected_branches: + main: + required_status_checks: + strict: true + required_pull_request_reviews: + dismiss_stale_reviews: true + required_approving_review_count: 1 + +notifications: + commits: [email protected] + issues: [email protected] + pullrequests: [email protected] + pullrequests_status: [email protected] + pullrequests_comment: [email protected] diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..5892a26 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,141 @@ +# +# 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. +# + +name: Bug report +title: "[Bug] [Module Name] Bug title" +description: Problems and issues with code of seatunnel +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Please make sure what you are reporting is indeed a bug with reproducible steps. + For better global communication, Please write in English. + + If you feel the description in English is not clear, then you can append description in Chinese, thanks! + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please make sure to search in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) + first to see whether the same issue was reported already. + options: + - label: > + I had searched in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) and found + no similar issues. + required: true + + - type: textarea + attributes: + label: What happened + description: Describe what happened. + placeholder: > + Please provide the context in which the problem occurred and explain what happened + validations: + required: true + + - type: textarea + attributes: + label: SeaTunnel Version + description: Provide SeaTunnel version. + placeholder: > + Please provide the version of SeaTunnel. + validations: + required: true + + - type: textarea + attributes: + label: SeaTunnel Config + description: Provide SeaTunnel Config, please delete sensitive information to prevent information leakage + placeholder: > + Please provide the SeaTunnel Config here. + render: conf + validations: + required: true + + - type: textarea + attributes: + label: Running Command + description: Provide the command you begin and run SeaTunnel job. + placeholder: > + Please provide the running command here. + render: shell + validations: + required: true + + - type: textarea + attributes: + label: Error Exception + description: Provide the error exception when you run your command. + placeholder: > + Please provide the error exception here. + render: log + validations: + required: true + + - type: textarea + attributes: + label: Zeta or Flink or Spark Version + description: Provide Zeta or Flink or Spark Version. + placeholder: > + Please provide the version of Zeta or Flink or Spark. + validations: + required: false + + - type: textarea + attributes: + label: Java or Scala Version + description: Provide Java or Scala Version. + placeholder: > + Please provide the version of Java or Scala. + validations: + required: false + + - type: textarea + attributes: + label: Screenshots + description: Provide the screenshots if necessary. + placeholder: > + Please copy-paste the screenshots here. + validations: + required: false + + - type: checkboxes + attributes: + label: Are you willing to submit PR? + description: > + This is absolutely not required, but we are happy to guide you in the contribution process + especially if you already have a good understanding of how to implement the fix. + seatunnel is a totally community-driven project and we love to bring new contributors in. + options: + - label: Yes I am willing to submit a PR! + + - type: checkboxes + attributes: + label: Code of Conduct + description: | + The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it. + options: + - label: > + I agree to follow this project's + [Code of Conduct](https://www.apache.org/foundation/policies/conduct) + required: true + + - type: markdown + attributes: + value: "Thanks for completing our form, and we will reply you as soon as possible." diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000..3d4350c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,83 @@ +# +# 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. +# +name: Feature request +description: Suggest an idea for seatunnel +title: "[Feature][Module Name] Feature title" +labels: ["Feature"] +body: + - type: markdown + attributes: + value: | + For better global communication, Please write in English. + + If you feel the description in English is not clear, then you can append description in Chinese, thanks! + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please make sure to search in the [feature](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22Feature%22) first + to see whether the same feature was requested already. + options: + - label: > + I had searched in the [feature](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22Feature%22) and found no + similar feature requirement. + required: true + + - type: textarea + attributes: + label: Description + description: Please describe the function you want in as much detail as possible. + placeholder: > + Rather than telling us how you might implement this feature, try to take a + step back and describe what you are trying to achieve. + validations: + required: true + + - type: textarea + attributes: + label: Usage Scenario + description: Please describe usage scenario of this feature. + + - type: textarea + attributes: + label: Related issues + description: Is there currently another issue associated with this? + + - type: checkboxes + attributes: + label: Are you willing to submit a PR? + description: > + This is absolutely not required, but we are happy to guide you in the contribution process + especially if you already have a good understanding of how to implement the feature. + seatunnel is a totally community-driven project and we love to bring new contributors in. + options: + - label: Yes I am willing to submit a PR! + + - type: checkboxes + attributes: + label: Code of Conduct + description: | + The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it. + options: + - label: | + I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) + required: true + + - type: markdown + attributes: + value: "Thanks for completing our form, and we will reply you as soon as possible." diff --git a/.github/ISSUE_TEMPLATE/umbrella.yml b/.github/ISSUE_TEMPLATE/umbrella.yml new file mode 100644 index 0000000..af553ec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/umbrella.yml @@ -0,0 +1,80 @@ +# +# 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. +# + +name: Umbrella +title: "[Umbrella] " +description: An umbrella issue with multiple sub-tasks +labels: [ "umbrella" ] +body: + + - type: checkboxes + attributes: + label: Code of Conduct + description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it. + options: + - label: > + I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) + required: true + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please make sure to search in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) + first to see whether the same issue was reported already. + options: + - label: > + I had searched in the [issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22) and found + no similar issues. + required: true + + - type: textarea + attributes: + label: Describe the proposal + placeholder: > + Please describe the content of the proposal clearly. + validations: + required: true + + - type: textarea + attributes: + label: Task list + description: > + For more details, please refer to [github docs](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-task-lists). + placeholder: > + Please create sub-tasks with the pre-create issues here and @ the assignees if you know any of them. A simple example is as follows: + - [ ] #1 + - [ ] #2 @user1 + - [ ] #3 + - [ ] #2 @user2 + - [ ] #3 + validations: + required: true + + - type: checkboxes + attributes: + label: Are you willing to submit PR? + description: > + This is absolutely not required, but we are happy to guide you in the contribution process + especially if you already have a good understanding of how to implement the fix. + seatunnel is a totally community-driven project and we love to bring new contributors in. + options: + - label: Yes I am willing to submit a PR! + + - type: markdown + attributes: + value: "Thanks for taking the time to propose an umbrella issue!" diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..2241897 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,51 @@ +<!-- + +Thank you for contributing to SeaTunnel! Please make sure that your code changes +are covered with tests. And in case of new features or big changes +remember to adjust the documentation. + +Feel free to ping committers for the review! + +## Contribution Checklist + - Make sure that the pull request corresponds to a [GITHUB issue](https://github.com/apache/seatunnel/issues). + - Name the pull request in the form "[Feature] [component] Title of the pull request", where *Feature* can be replaced by `Hotfix`, `Bug`, etc. + - Minor fixes should be named following this pattern: `[hotfix] [docs] Fix typo in README.md doc`. +--> + +### Purpose of this pull request + +<!-- Describe the purpose of this pull request. For example: This pull request adds checkstyle plugin.--> + + +### Does this PR introduce _any_ user-facing change? + +<!-- +Note that it means *any* user-facing change including all aspects such as the documentation fix. +If yes, please clarify the previous behavior and the change this PR proposes - provide the console output, description and/or an example to show the behavior difference if possible. +If possible, please also clarify if this is a user-facing change compared to the released SeaTunnel versions or within the unreleased branches such as dev. +If no, write 'No'. +If you are adding/modifying connector documents, please follow our new specifications: https://github.com/apache/seatunnel/issues/4544. +--> + + +### How was this patch tested? + +<!-- +If tests were added, say they were added here. Please make sure to add some test cases that check the changes thoroughly including negative and positive cases if possible. +If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future. +If tests were not added, please describe why they were not added and/or why it was difficult to add. +If you are adding E2E test cases, maybe refer to https://github.com/apache/seatunnel/blob/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-cdc-mysql-e2e/src/test/resources/mysqlcdc_to_mysql.conf, here is a good example. +--> + + +### Check list + +* [ ] If any new Jar binary package adding in your PR, please add License Notice according + [New License Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/contribution/new-license.md) +* [ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs +* [ ] If you are contributing the connector code, please check that the following files are updated: + 1. Update [plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties) and add new connector information in it + 2. Update the pom file of [seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml) + 3. Add ci label in [label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml) + 4. Add e2e testcase in [seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/) + 5. Update connector [plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config) \ No newline at end of file diff --git a/.github/workflows/approve-label-trigger.yml b/.github/workflows/approve-label-trigger.yml new file mode 100644 index 0000000..5ed70f7 --- /dev/null +++ b/.github/workflows/approve-label-trigger.yml @@ -0,0 +1,28 @@ +# 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. +# + +name: Label-when-reviewed +on: pull_request_review +jobs: + + label-when-reviewed: + name: "Label PRs when reviewed" + runs-on: ubuntu-latest + steps: + - name: "Do nothing. Only trigger corresponding workflow_run event" + run: echo diff --git a/.github/workflows/approve-label.yml b/.github/workflows/approve-label.yml new file mode 100644 index 0000000..73e75af --- /dev/null +++ b/.github/workflows/approve-label.yml @@ -0,0 +1,64 @@ +# 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. +# + +name: "Label when approved workflow run" +on: + workflow_run: + workflows: [Label-when-reviewed] + types: [requested] +permissions: + # All other permissions are set to none + checks: write + contents: read + pull-requests: write +jobs: + label-when-approved: + name: "Label when approved" + runs-on: ubuntu-latest + outputs: + isApprovedByCommiters: ${{ steps.label-when-approved-by-commiters.outputs.isApproved }} + isApprovedByAnyone: ${{ steps.label-when-approved-by-anyone.outputs.isApproved }} + steps: + - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" + uses: actions/checkout@v2 + with: + persist-credentials: false + submodules: recursive + - name: "Get information about the original trigger of the run" + uses: ./.github/actions/get-workflow-origin + id: source-run-info + with: + token: ${{ secrets.GITHUB_TOKEN }} + sourceRunId: ${{ github.event.workflow_run.id }} + - name: Label when approved by commiters + uses: ./.github/actions/label-when-approved-action + id: label-when-approved-by-commiters + with: + token: ${{ secrets.GITHUB_TOKEN }} + label: 'approved' + require_committers_approval: 'true' + remove_label_when_approval_missing: 'true' + pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }} + - name: Label when approved by anyone + uses: ./.github/actions/label-when-approved-action + id: label-when-approved-by-anyone + with: + token: ${{ secrets.GITHUB_TOKEN }} + label: 'reviewed' + pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }} + remove_label_when_approval_missing: 'true' diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 0000000..eae07e6 --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,56 @@ +# +# 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. +# + +name: Backend + +on: + workflow_call: + inputs: + TEST_IN_PR: + required: false + type: string + default: 'true' + +concurrency: + group: backend-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + TEST_IN_PR: ${{ inputs.TEST_IN_PR }} + +jobs: + license-header: + name: License header + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Check license header + uses: apache/[email protected] + + code-style: + name: Code style + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Check code style + run: ./mvnw --batch-mode --quiet --no-snapshot-updates clean spotless:check diff --git a/.github/workflows/build_main.yml b/.github/workflows/build_main.yml new file mode 100644 index 0000000..25c5567 --- /dev/null +++ b/.github/workflows/build_main.yml @@ -0,0 +1,33 @@ +# +# 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. +# + +name: "Build" + +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + call-build-and-test: + permissions: + packages: write + name: Run + uses: ./.github/workflows/backend.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..bdeafd9 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,55 @@ +# 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. + + +# https://github.com/actions/stale +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '0 0 * * *' +permissions: + # Stale recommended permissions + pull-requests: write + issues: write +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + # Stale Issues + days-before-issue-stale: 30 + days-before-issue-close: 7 + # We do not stale Issues with label `Waiting for reply`, `Waiting for code update`,`Waiting for users feedback`, `New feature` and `STIP` + exempt-issue-labels: 'Waiting for reply,Waiting for code update,Waiting for users feedback,New feature,STIP,security' + stale-issue-message: > + This issue has been automatically marked as stale because it has not had recent activity + for 30 days. It will be closed in next 7 days if no further activity occurs. + close-issue-message: > + This issue has been closed because it has not received response for too long time. You could + reopen it if you encountered similar problems in the future. + # Stale PRs + days-before-pr-stale: 120 + days-before-pr-close: 7 + stale-pr-message: > + This pull request has been automatically marked as stale because it has not had recent + activity for 120 days. It will be closed in 7 days if no further activity occurs. + close-pr-message: > + This pull request has been closed because it has not had recent activity. You could reopen it + if you try to continue your work, and anyone who are interested in it are encouraged to continue + work on this pull request. + remove-pr-stale-when-updated: true + remove-issue-stale-when-updated: true + operations-per-run: 1000 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..204a966 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Package Files # +*.jar +*.zip +*.tar.gz + +# see JDK-8214300 +.attach_pid* + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build targets +target/ + +# Log file +*.log +/logs +logs.zip + +# Intellij Idea files +.idea/ +*.iml +.idea/* + +.DS_Store + +metastore_db/ + +work_dir + +all-dependencies.txt +self-modules.txt +third-party-dependencies.txt + +*.keytab +/derby.log + +dependency-reduced-pom.xml + +apidoc + +# Python +*.py[cod] + +Test.java +Test.scala +test.conf +spark-warehouse +*.flattened-pom.xml + +seatunnel-examples + +# vscode +.vscode + +/lib/* +version.properties +node/ + +dist/ + +seatunnel-engine/seatunnel-engine-server/**/ui/* \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..888c81f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "seatunnel"] + path = seatunnel + url = https://github.com/apache/seatunnel.git diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 0000000..aafed25 Binary files /dev/null and b/.idea/icon.png differ diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..f1c644e --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,32 @@ +<?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 version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> + <component name="IssueNavigationConfiguration"> + <option name="links"> + <list> + <IssueNavigationLink> + <option name="issueRegexp" value="#(\d+)" /> + <option name="linkRegexp" value="https://github.com/apache/seatunnel-tools/pull/$1" /> + </IssueNavigationLink> + </list> + </option> + </component> +</project> \ No newline at end of file diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..aa1e4df --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# 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. + +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/README.md b/README.md new file mode 100644 index 0000000..8372d24 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Apache SeaTunnel Tools + +The repository contains tools for Apache SeaTunnel. + +Get the main project from [Apache SeaTunnel](https://github.com/apache/seatunnel) \ No newline at end of file diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..5643201 --- /dev/null +++ b/mvnw @@ -0,0 +1,316 @@ +#!/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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100755 index 0000000..8a15b7f --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a795130 --- /dev/null +++ b/pom.xml @@ -0,0 +1,477 @@ +<?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> + + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>31</version> + <relativePath /> + </parent> + + <groupId>org.apache.seatunnel</groupId> + <artifactId>seatunnel-tools</artifactId> + <version>${revision}</version> + <packaging>pom</packaging> + + <name>SeaTunnel Tools</name> + + <description>Production ready big data processing product based on Apache Spark and Apache Flink.</description> + + <modules> + <!-- + We retrieve the config module from maven repository. If you want to change the config module, + you need to open this annotation and change the dependency of config-shade to project. + <module>seatunnel-config</module> + --> + <module>seatunnel</module> + </modules> + + <properties> + <!--todo The classification is too confusing, reclassify by type--> + <revision>0.0.1-SNAPSHOT</revision> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <java.version>1.8</java.version> + <scala.version>2.12.15</scala.version> + <scala.binary.version>2.12</scala.binary.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + + <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version> + <maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version> + <nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version> + <maven-source-plugin.version>3.0.1</maven-source-plugin.version> + <maven-javadoc-plugin.version>2.9.1</maven-javadoc-plugin.version> + <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version> + <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version> + <maven-pmd-plugin.version>3.8</maven-pmd-plugin.version> + <maven-shade-plugin.version>3.4.1</maven-shade-plugin.version> + <maven-helper-plugin.version>3.2.0</maven-helper-plugin.version> + <maven-git-commit-id-plugin.version>4.0.4</maven-git-commit-id-plugin.version> + <flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version> + <maven-license-maven-plugin>1.20</maven-license-maven-plugin> + <maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version> + <maven-scm-provider-jgit.version>2.0.0</maven-scm-provider-jgit.version> + <spotless.version>2.29.0</spotless.version> + <!-- Option args --> + <skipUT>false</skipUT> + <skipIT>true</skipIT> + <skip.spotless>false</skip.spotless> + </properties> + + <build> + + <finalName>${project.artifactId}-${project.version}-${scala.version}</finalName> + + <pluginManagement> + <plugins> + + <!-- java/scala compiler (Start) --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${maven-compiler-plugin.version}</version> + <configuration> + <source>${maven.compiler.source}</source> + <target>${maven.compiler.target}</target> + <forceJavacCompilerUse>true</forceJavacCompilerUse> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${maven-surefire-plugin.version}</version> + <configuration> + <skip>${skipUT}</skip> + <systemPropertyVariables> + <jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile> + </systemPropertyVariables> + <excludes> + <exclude>**/*IT.java</exclude> + </excludes> + <classpathDependencyExcludes> + <!-- + The logger provider & bridges declared under 'provided' scope should be explicitly excluded from testing as below. + --> + <classpathDependencyExclude>org.slf4j:slf4j-jdk14</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:slf4j-jcl</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:slf4j-nop</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:slf4j-simple</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:slf4j-reload4j</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:slf4j-log4j12</classpathDependencyExclude> + <classpathDependencyExclude>org.slf4j:log4j-over-slf4j</classpathDependencyExclude> + <classpathDependencyExclude>commons-logging:commons-logging</classpathDependencyExclude> + <classpathDependencyExclude>log4j:log4j</classpathDependencyExclude> + <classpathDependencyExclude>ch.qos.logback:logback-classic</classpathDependencyExclude> + <classpathDependencyExclude>ch.qos.logback:logback-core</classpathDependencyExclude> + <classpathDependencyExclude>org.apache.logging.log4j:log4j-to-slf4j</classpathDependencyExclude> + </classpathDependencyExcludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <version>${maven-failsafe-plugin.version}</version> + <configuration> + <skip>${skipIT}</skip> + </configuration> + <executions> + <execution> + <goals> + <goal>integration-test</goal> + <goal>verify</goal> + </goals> + </execution> + </executions> + </plugin> + + <!-- shade --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>${maven-shade-plugin.version}</version> + <configuration> + <shadedArtifactAttached>false</shadedArtifactAttached> + <createDependencyReducedPom>true</createDependencyReducedPom> + <!-- Make sure the transitive dependencies are written to the generated pom under <dependencies> --> + <promoteTransitiveDependencies>true</promoteTransitiveDependencies> + <artifactSet> + <excludes> + <exclude>org.slf4j:*</exclude> + <exclude>ch.qos.logback:*</exclude> + <exclude>log4j:*</exclude> + <exclude>org.apache.logging.log4j:*</exclude> + <exclude>commons-logging:*</exclude> + </excludes> + </artifactSet> + <filters> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>META-INF/*.SF</exclude> + <exclude>META-INF/*.DSA</exclude> + <exclude>META-INF/*.RSA</exclude> + </excludes> + </filter> + </filters> + </configuration> + + <executions> + <execution> + <goals> + <goal>shade</goal> + </goals> + <phase>package</phase> + <configuration> + <transformers combine.children="append"> + <!-- The service transformer is needed to merge META-INF/services files --> + <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + + <!-- assembly --> + <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-source-plugin</artifactId> + <version>${maven-source-plugin.version}</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${maven-javadoc-plugin.version}</version> + <configuration> + <source>${maven.compiler.source}</source> + <failOnError>false</failOnError> + <aggregate>true</aggregate> + <skip>${maven.javadoc.skip}</skip> + <additionalparam>-Xdoclint:none</additionalparam> + </configuration> + <executions> + <execution> + <id>attach-javadocs</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${maven-helper-plugin.version}</version> + </plugin> + + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <version>${maven-git-commit-id-plugin.version}</version> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>license-maven-plugin</artifactId> + <version>${maven-license-maven-plugin}</version> + <configuration> + <outputDirectory>${project.basedir}/seatunnel-dist/target/</outputDirectory> + <thirdPartyFilename>THIRD-PARTY.txt</thirdPartyFilename> + <sortArtifactByName>false</sortArtifactByName> + <useMissingFile>false</useMissingFile> + <addJavaLicenseAfterPackage>true</addJavaLicenseAfterPackage> + <socketTimeout>30000</socketTimeout> + <connectTimeout>30000</connectTimeout> + <connectionRequestTimeout>30000</connectionRequestTimeout> + <excludedScopes>test,provided</excludedScopes> + </configuration> + </plugin> + + <!-- make sure that flatten runs after shaded --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>flatten-maven-plugin</artifactId> + <version>${flatten-maven-plugin.version}</version> + <configuration> + <updatePomFile>true</updatePomFile> + <flattenMode>resolveCiFriendliesOnly</flattenMode> + </configuration> + <executions> + <execution> + <id>flatten</id> + <goals> + <goal>flatten</goal> + </goals> + <phase>process-resources</phase> + </execution> + <execution> + <id>flatten.clean</id> + <goals> + <goal>clean</goal> + </goals> + <phase>clean</phase> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>${maven-dependency-plugin.version}</version> + <configuration> + <appendOutput>true</appendOutput> + </configuration> + </plugin> + </plugins> + </pluginManagement> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <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>${maven-scm-provider-jgit.version}</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>license-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>flatten-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>com.diffplug.spotless</groupId> + <artifactId>spotless-maven-plugin</artifactId> + <version>${spotless.version}</version> + <configuration> + <skip>${skip.spotless}</skip> + <java> + <excludes> + <exclude>src/main/java/org/apache/seatunnel/antlr4/generated/*.*</exclude> + </excludes> + <googleJavaFormat> + <version>1.7</version> + <style>AOSP</style> + </googleJavaFormat> + <removeUnusedImports /> + <formatAnnotations /> + <importOrder> + <order>org.apache.seatunnel.shade,org.apache.seatunnel,org.apache,org,,javax,java,\#</order> + </importOrder> + <replaceRegex> + <name>Remove wildcard imports</name> + <searchRegex>import\s+(static)*\s*[^\*\s]+\*;(\r\n|\r|\n)</searchRegex> + <replacement>$1</replacement> + </replaceRegex> + <replaceRegex> + <name>Block powermock</name> + <searchRegex>import\s+org\.powermock\.[^\*\s]*(|\*);(\r\n|\r|\n)</searchRegex> + <replacement>$1</replacement> + </replaceRegex> + <replaceRegex> + <name>Block jUnit4 imports</name> + <searchRegex>import\s+org\.junit\.[^jupiter][^\*\s]*(|\*);(\r\n|\r|\n)</searchRegex> + <replacement>$1</replacement> + </replaceRegex> + <replaceRegex> + <name>Convert Google Guava imports to shade</name> + <searchRegex>import\s+(static\s+)?com\.google\.common\.([^;]+);(\r\n|\r|\n)</searchRegex> + <replacement>import $1org.apache.seatunnel.shade.com.google.common.$2;$3</replacement> + </replaceRegex> + <replaceRegex> + <name>Convert Jetty imports to shade</name> + <searchRegex>import\s+(static\s+)?org\.eclipse\.jetty\.([^;]+);(\r\n|\r|\n)</searchRegex> + <replacement>import $1org.apache.seatunnel.shade.org.eclipse.jetty.$2;$3</replacement> + </replaceRegex> + <replaceRegex> + <name>Convert Hikari imports to shade</name> + <searchRegex>import\s+(static\s+)?com\.zaxxer\.hikari\.([^;]+);(\r\n|\r|\n)</searchRegex> + <replacement>import $1org.apache.seatunnel.shade.com.zaxxer.hikari.$2;$3</replacement> + </replaceRegex> + <replaceRegex> + <name>Convert Janino imports to shade</name> + <searchRegex>import\s+(static\s+)?org\.codehaus\.(janino|commons)\.([^;]+);(\r\n|\r|\n)</searchRegex> + <replacement>import $1org.apache.seatunnel.shade.org.codehaus.$2.$3;$4</replacement> + </replaceRegex> + </java> + <pom> + <sortPom> + <encoding>UTF-8</encoding> + <nrOfIndentSpace>4</nrOfIndentSpace> + <keepBlankLines>true</keepBlankLines> + <indentBlankLines>false</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> + <!-- disable markdown for now, it will change sidebar config in file--> + <!-- <markdown>--> + <!-- <includes>--> + <!-- <include>docs/**/*.md</include>--> + <!-- </includes>--> + <!-- <excludes>--> + <!-- <exclude>**/.github/**/*.md</exclude>--> + <!-- </excludes>--> + <!-- <flexmark />--> + <!-- </markdown>--> + <upToDateChecking> + <enabled>true</enabled> + </upToDateChecking> + </configuration> + <executions> + <execution> + <id>spotless-check</id> + <goals> + <goal>check</goal> + </goals> + <phase>validate</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <url>https://github.com/apache/seatunnel-tools</url> + + <licenses> + <license> + <name>The Apache License, Version 2.0</name> + <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> + + <mailingLists> + <mailingList> + <name>SeaTunnel Developer List</name> + <subscribe>[email protected]</subscribe> + <unsubscribe>[email protected]</unsubscribe> + <post>[email protected]</post> + </mailingList> + <mailingList> + <name>SeaTunnel Commits List</name> + <subscribe>[email protected]</subscribe> + <unsubscribe>[email protected]</unsubscribe> + <post>[email protected]</post> + </mailingList> + </mailingLists> + + <scm> + <connection>scm:git:https://github.com/apache/seatunnel.git</connection> + <developerConnection>scm:git:https://github.com/apache/seatunnel.git</developerConnection> + <url>https://github.com/apache/seatunnel</url> + <tag>HEAD</tag> + </scm> + + <issueManagement> + <system>GitHub</system> + <url>https://github.com/apache/seatunnel/issues</url> + </issueManagement> + +</project> diff --git a/seatunnel b/seatunnel new file mode 160000 index 0000000..085023a --- /dev/null +++ b/seatunnel @@ -0,0 +1 @@ +Subproject commit 085023ad0db1a8729ce724a14855c0077f051dfe
