From e1e08c565aa33521ba74fbfea7d44ca0e6a7a57f Mon Sep 17 00:00:00 2001 From: micronaut-build Date: Fri, 5 Jun 2020 09:33:09 +0000 Subject: [PATCH 1/2] Update common files --- .github/workflows/central-sync.yml | 34 ++++ .github/workflows/dependency-check.yml | 26 +++ .github/workflows/dependency-update.yml | 40 +++++ .github/workflows/gradle.yml | 52 ++++++ .github/workflows/label-sync.yml | 21 +++ .github/workflows/release-notes.yml | 56 +++++++ .github/workflows/release.yml | 62 +++++++ .gitignore | 23 ++- ISSUE_TEMPLATE.md | 36 ++++ LICENSE | 201 +++++++++++++++++++++++ config/HEADER | 2 +- config/checkstyle/checkstyle.xml | 60 +++---- config/spotless.license.java | 15 ++ gradle/license.gradle | 3 +- gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 58910 bytes gradle/wrapper/gradle-wrapper.properties | 5 +- gradlew | 2 + gradlew.bat | 1 + 18 files changed, 603 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/central-sync.yml create mode 100644 .github/workflows/dependency-check.yml create mode 100644 .github/workflows/dependency-update.yml create mode 100644 .github/workflows/gradle.yml create mode 100644 .github/workflows/label-sync.yml create mode 100644 .github/workflows/release-notes.yml create mode 100644 .github/workflows/release.yml create mode 100644 ISSUE_TEMPLATE.md create mode 100644 LICENSE create mode 100644 config/spotless.license.java diff --git a/.github/workflows/central-sync.yml b/.github/workflows/central-sync.yml new file mode 100644 index 00000000..e60a4c67 --- /dev/null +++ b/.github/workflows/central-sync.yml @@ -0,0 +1,34 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Maven Central Sync +on: + release: + types: [published] +jobs: + central-sync: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - uses: gradle/wrapper-validation-action@v1 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Set the current release version + id: release_version + run: | + release_version=${GITHUB_REF:11} + sed -i "s/^projectVersion.*$/projectVersion\=${release_version}/" gradle.properties + echo ::set-output name=release_version::${release_version} + - name: Publish to Sonatype OSSRH + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} + GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }} + GPG_FILE: ${{ secrets.GPG_FILE }} + run: echo $GPG_FILE | base64 -d > secring.gpg && ./gradlew publish && ./gradlew closeAndReleaseRepository diff --git a/.github/workflows/dependency-check.yml b/.github/workflows/dependency-check.yml new file mode 100644 index 00000000..d0eed836 --- /dev/null +++ b/.github/workflows/dependency-check.yml @@ -0,0 +1,26 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Check Dependencies +on: + schedule: + - cron: '0 16 * * MON-FRI' +jobs: + check-dependencies: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/cache@v1 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Check Dependencies + run: ./gradlew dependencyUpdates diff --git a/.github/workflows/dependency-update.yml b/.github/workflows/dependency-update.yml new file mode 100644 index 00000000..a71906a5 --- /dev/null +++ b/.github/workflows/dependency-update.yml @@ -0,0 +1,40 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Update Dependencies +on: + schedule: + - cron: '0 4 * * MON-FRI' +jobs: + dependency-updates: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/cache@v1 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Export Gradle Properties + uses: micronaut-projects/github-actions/export-gradle-properties@master + - name: Check Dependencies + run: ./gradlew useLatestVersions + - name: Create Pull Request + uses: peter-evans/create-pull-request@v2 + with: + token: ${{ secrets.GH_TOKEN }} + committer: GitHub + author: micronaut-build + commit-message: Update dependencies + title: 'Dependency upgrades' + body: Upgrades dependencies to their latest versions + labels: "type: dependency-upgrade" + base: ${{ env.githubBranch }} + branch: dependency-updates \ No newline at end of file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..301aa6a0 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,52 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Java CI +on: + push: + branches: + - master + - '[1-9]+.[0-9]+.x' + pull_request: + branches: + - master + - '[1-9]+.[0-9]+.x' +jobs: + build: + if: github.repository != 'micronaut-projects/micronaut-project-template' + runs-on: ubuntu-latest + strategy: + matrix: + java: ['8', '11', '14'] + steps: + - uses: actions/checkout@v2 + - uses: actions/cache@v1 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + - name: Build with Gradle + run: ./gradlew dependencyUpdates check --parallel --continue + env: + TESTCONTAINERS_RYUK_DISABLED: true + - name: Publish to JFrog OSS + if: success() && github.event_name == 'push' && matrix.java == '8' + env: + BINTRAY_USER: ${{ secrets.BINTRAY_USER }} + BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }} + run: ./gradlew publish docs + - name: Publish to Github Pages + if: success() && github.event_name == 'push' && matrix.java == '8' + uses: micronaut-projects/github-pages-deploy-action@master + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + BASE_BRANCH: ${{ env.githubBranch }} + BRANCH: gh-pages + FOLDER: build/docs diff --git a/.github/workflows/label-sync.yml b/.github/workflows/label-sync.yml new file mode 100644 index 00000000..0918db3d --- /dev/null +++ b/.github/workflows/label-sync.yml @@ -0,0 +1,21 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Sync labels +on: + issues: + types: [opened, edited, deleted, labeled, closed] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Download labels.yml + run: curl -O https://raw.githubusercontent.com/micronaut-projects/micronaut-build/master/labels.yml + - uses: micnncim/action-label-syncer@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + manifest: labels.yml \ No newline at end of file diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml new file mode 100644 index 00000000..89933a8f --- /dev/null +++ b/.github/workflows/release-notes.yml @@ -0,0 +1,56 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Release Notes +on: + pull_request: + types: [closed, labeled] + branches: + - master + - '[1-9]+.[0-9]+.x' + issues: + types: [closed,reopened, labeled] + push: + branches: + - master + - '[1-9]+.[0-9]+.x' + paths: + - ".github/workflows/release-notes.yml" +jobs: + release_notes: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Check if it has release drafter config file + id: check_release_drafter + run: | + has_release_drafter=$([ -f .github/release-drafter.yml ] && echo "true" || echo "false") + echo ::set-output name=has_release_drafter::${has_release_drafter} + + # If it has release drafter: + - uses: release-drafter/release-drafter@v5 + if: steps.check_release_drafter.outputs.has_release_drafter == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # Otherwise: + - name: Export Gradle Properties + if: steps.check_release_drafter.outputs.has_release_drafter == 'false' + uses: micronaut-projects/github-actions/export-gradle-properties@master + - uses: micronaut-projects/github-actions/release-notes@master + if: steps.check_release_drafter.outputs.has_release_drafter == 'false' + id: release_notes + with: + branch: ${{ env.githubBranch }} + - uses: ncipollo/release-action@v1 + if: steps.check_release_drafter.outputs.has_release_drafter == 'false' + with: + allowUpdates: true + commit: ${{ env.githubBranch }} + draft: true + name: ${{ env.title }} ${{ steps.release_notes.outputs.next_version }} + tag: v${{ steps.release_notes.outputs.next_version }} + bodyFile: CHANGELOG.md + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b4c9fbc5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,62 @@ +# WARNING: Do not edit this file directly. Instead, go to: +# +# https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows +# +# and edit them there. Note that it will be sync'ed to all the Micronaut repos +name: Release +on: + release: + types: [published] +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - uses: gradle/wrapper-validation-action@v1 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Set the current release version + id: release_version + run: echo ::set-output name=release_version::${GITHUB_REF:11} + - name: Run pre-release + uses: micronaut-projects/github-actions/pre-release@master + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Publish to Bintray + env: + BINTRAY_USER: ${{ secrets.BINTRAY_USER }} + BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }} + run: ./gradlew bintrayUpload docs + - name: Export Gradle Properties + uses: micronaut-projects/github-actions/export-gradle-properties@master + - name: Publish to Github Pages + if: success() + uses: micronaut-projects/github-pages-deploy-action@master + env: + BETA: ${{ contains(steps.release_version.outputs.release_version, 'M') || contains(steps.release_version.outputs.release_version, 'RC') }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + BASE_BRANCH: ${{ env.githubBranch }} + BRANCH: gh-pages + FOLDER: build/docs + VERSION: ${{ steps.release_version.outputs.release_version }} + - name: Checkout micronaut-core + uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_TOKEN }} + repository: micronaut-projects/micronaut-core + ref: ${{ env.githubCoreBranch }} + path: micronaut-core # Must be micronaut-core + continue-on-error: true + - name: Update BOM + uses: micronaut-projects/github-actions/update-bom@master + with: + token: ${{ secrets.GH_TOKEN }} + continue-on-error: true + - name: Run post-release + if: success() + uses: micronaut-projects/github-actions/post-release@master + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 60e64810..e01c9ee4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,31 @@ +dist/ +.DS_Store +target/ .gradle/ .idea/ build/ +classes/ +out/ +*.db +*.log +*.iml +.classpath +.factorypath +bin/ +.settings/ +.project +*/test/ +*/META-INF/ +*.ipr +*.iws +.kotlintest +*/.kotlintest/ # ignore resources, are downloaded via a gradle task from micronaut_docs src/main/docs/resources/css/highlight/*.css src/main/docs/resources/css/highlight/*.png src/main/docs/resources/css/highlight/*.jpg src/main/docs/resources/css/*.css -src/main/docs/resources/img/*.svg src/main/docs/resources/js/*.js -src/main/docs/resources/style/*.html \ No newline at end of file +src/main/docs/resources/style/*.html +src/main/docs/resources/img/micronaut-logo-white.svg diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..3fcd4c64 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,36 @@ +Thanks for reporting an issue, please review the task list below before submitting the +issue. Your issue report will be closed if the issue is incomplete and the below tasks not completed. + +NOTE: If you are unsure about something and the issue is more of a question a better place to ask questions is on Stack Overflow (https://stackoverflow.com/tags/micronaut) or Gitter (https://gitter.im/micronautfw/). DO NOT use the issue tracker to ask questions. + +### Task List + +- [ ] Steps to reproduce provided +- [ ] Stacktrace (if present) provided +- [ ] Example that reproduces the problem uploaded to Github +- [ ] Full description of the issue provided (see below) + +### Steps to Reproduce + +1. TODO +2. TODO +3. TODO + +### Expected Behaviour + +Tell us what should happen + +### Actual Behaviour + +Tell us what happens instead + +### Environment Information + +- **Operating System**: TODO +- **Micronaut Version:** TODO +- **JDK Version:** TODO + +### Example Application + +- TODO: link to github repository with example that reproduces the issue + diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..b5312355 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/config/HEADER b/config/HEADER index 10b6fdb8..b08b7205 100644 --- a/config/HEADER +++ b/config/HEADER @@ -4,7 +4,7 @@ Licensed 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 +https://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, diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 8cfd8d89..cf521c07 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -1,30 +1,31 @@ + "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" + "https://checkstyle.org/dtds/configuration_1_3.dtd"> @@ -42,29 +43,29 @@ - + - + - + - + - + - + - + - + - + + - + @@ -96,7 +98,7 @@ - + @@ -106,7 +108,7 @@ - + @@ -115,14 +117,14 @@ - + - + @@ -141,14 +143,14 @@ - + - + @@ -156,7 +158,7 @@ - + @@ -170,13 +172,13 @@ - + - + @@ -190,13 +192,13 @@ - + - + diff --git a/config/spotless.license.java b/config/spotless.license.java new file mode 100644 index 00000000..91ec22ab --- /dev/null +++ b/config/spotless.license.java @@ -0,0 +1,15 @@ +/* + * Copyright 2017-$YEAR original authors + * + * Licensed 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 + * + * https://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. + */ \ No newline at end of file diff --git a/gradle/license.gradle b/gradle/license.gradle index a453b7e4..530d2ee5 100644 --- a/gradle/license.gradle +++ b/gradle/license.gradle @@ -9,8 +9,9 @@ license { java = 'SLASHSTAR_STYLE' groovy = 'SLASHSTAR_STYLE' } - ext.year = '2017-2019' + ext.year = '2017-2020' + exclude "**/transaction/**" exclude '**/*.txt' exclude '**/*.html' exclude '**/*.xml' diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..62d4c053550b91381bbd28b1afc82d634bf73a8a 100644 GIT binary patch delta 12524 zcmY*pqN z|ERss*;ReIR@Lg&r_R7IT-GRDbpR4NMKNcwFgy&*A|eco1PnBHRth?SBneiw6$UT&^LVJ0?Naa`KfV(>F!Ez}~S z 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 delta 12163 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index eb0670c5..622ab64a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Mar 10 13:03:01 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d..fbd7c515 100755 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 9109989e..a9f778a7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -84,6 +84,7 @@ set CMD_LINE_ARGS=%* set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% From f3d016c8228305ad13cf24813fab3077a0322ac9 Mon Sep 17 00:00:00 2001 From: graemerocher Date: Fri, 5 Jun 2020 11:50:21 +0200 Subject: [PATCH 2/2] Update build / licenses / maven group --- .travis.yml | 37 ---- README.md | 4 +- build.gradle | 169 ++++-------------- gradle.properties | 35 ++-- .../configuration/jmx/JmxConfiguration.java | 4 +- .../jmx/MBeanServerFactoryBean.java | 4 +- .../context/AbstractDynamicMBeanFactory.java | 4 +- .../jmx/context/DefaultNameGenerator.java | 4 +- .../jmx/context/DynamicMBeanFactory.java | 4 +- .../jmx/context/NameGenerator.java | 4 +- .../jmx/context/package-info.java | 4 +- .../jmx/endpoint/EndpointMBeanFactory.java | 4 +- .../endpoint/EndpointMethodJmxProcessor.java | 4 +- .../jmx/endpoint/EndpointNameGenerator.java | 4 +- .../jmx/endpoint/package-info.java | 4 +- .../configuration/jmx/package-info.java | 4 +- src/main/docs/guide/setup.adoc | 2 +- travis-build-pr.sh | 7 - travis-build.sh | 106 ----------- 19 files changed, 81 insertions(+), 327 deletions(-) delete mode 100755 .travis.yml delete mode 100755 travis-build-pr.sh delete mode 100755 travis-build.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100755 index db080951..00000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -dist: trusty -language: java -jdk: -- oraclejdk8 -- openjdk11 -sudo: required -env: - global: - - TERM=dumb - - MALLOC_ARENA_MAX=1 - - GRADLE_OPTS="-Xmx768m -Xms256m -XX:MaxPermSize=372m -XX:+CMSClassUnloadingEnabled" - - GIT_NAME="Graeme Rocher" - - GIT_EMAIL="graeme.rocher@gmail.com" - - secure: TFyoO2la9gUFPGPpH5F6wdnjNh85Ad+X1owDw+mBp52gInONy3CQlxVVjsrePxdldkV98M4TZY0fCRTv2/LuBPoGjDqaermFAnPESKkg6ksrVfVx9I95CGKWLBrVB8HzcZCvZjlkqP+d7FtccYOBbgGqvu8ed3ZHEnIsW1S3cq8d3nhxegIvViDwr3QZLv7Pz+e5WiEtJHPDt+U6V7Qfs/IVj+byWRio2i0YWXBUsyB62ETls1vRmr/1R2hW+uhW69Fx8MJtICrjkp5RgV6LOP8IAaVXpbni7YqsAJBFdRAJSza+r4KsLMSfJ4fvgn1COO1ZhYJC1T+wxv4S2zGBk6xxfDz5GAT95QhcJ5zpArdYcBM9bksaK/SECh9DI9r120e8FALrcadacYSSlk2JOIc3iT67QmDaY2fACaty7fTOLKJ7rbmPLsUeY0QzCCsAtoHbKt83D0699BaiaQw0MWI2X8VaZc+AS5UrdJLU0UduSLh64uIdkWDlxygUNnxrvZRe1dwu5auBP2BFQnrXNcUlOzG/Huctfs0MpWpNVPiytojUzZ1ICTOUxLpnZFeUT5u9lDLmZKtjc1rdM9KtL68wCCElp+lzLVRZzUuEFUpB0F8vq3RPKy+Z5QpMyMttNeO8LPlMK0IxeB70QUDQ2YDuz77l+Z1Bi2WH2S/37WI= - - secure: t61BopE5vtdJiHNwQbEe1VIVyvKUC/Z3UYiFTMJ1kARrj7jG9fhVnVA2JhXMlFkKvSRhslcIU5T534EjgK2zJxRkDZHkN+zKz8qyP0bkuV41J6OMtPaBBw3hehnu/qhYGejPCNyD2awws89O3+OEz2Q2UFsLi8WRDevLXERgmN2z4DP96UYuPKg2Uh6UlpZ7MgRJeO8xyLrz16AW+ceSJQLYFYQW9vD43FrzCun/4N9qDSXFxOpdnzwNtwDOnGgNDpI69tXqqUKjUkpMYu2hmE4RTy2HSHmT2eUBAU2w2Z92qz0trinzZzjXm9LpOz2YrImodAYTOhNH/2/PHZ+HQqE51FCUr+gl4IChECQ9Zz4utxpNOAHPdP5OcnjmeX1zZiWl6ULyugjhN4g+A8fKC41oY3W5Ky1Ur1D5hgoQl9t5uqh6UtrmOU/m4rweZiD6K8Bi4M7S2WC4VEjot2GaRIj/8UtAzT/rKjGWvXji2oKYiiK+67uCoh/+jH6Hkv9Z8EJejXCqctw4bco9/6Rfjl/bdivrO5sKlFHNMgCUp6hWCP1A/cgDCsX4ALFFpXQnHDUhkelXkCk2t0ex4nAyEG1ObKLN5twNmSNOyRr+G4vG9R7dEE+m+6ah0zJ2k0F3qmRJJudA+EE1V89GiNWmikq9WeGkIKZquVHjYLajqek= - - secure: Ap6tO5bngVXdhcbDRQghcuOfMW5ZRBWbaifLqH85REY8XgMJ01vWQXAKmlf+BPCLO+klVWrpxRuxaKjAGeRvW7oSz8yBWv9IR9xJJeMhyEgG6XmYXaLs/ky8ecxe6DooUVWk3h+JRRLCu8voo7wvw3CNpxWqXXc8QivHrBaQKZmo8GhM6j9X8rR6Q9QIBv8gNcVgw6AJ66vPCbMZhXFOf2ktT3bbqn+JNcIl6hfqoRmtV3aYDVCuGi0K8Ydz5aGj8rgdMt+3hvakhGN8cRYwq+n/dV5U/qjydMo2KdrqJdIOrWjyQksJQsGkIHu87zxGrL4ZtaRbvWEdZeQLI2uW2gE9DyF5UiilOx+vVTeb6htcHWbCT/j/ERe5OyMFtuR2zLdwrgjOTrrhxEeOOMjtBb1PmOgDJ6jVsd2XKdgPGPQ8L4GanbZX1x/TchTf3Pj/GU2t4L+QIKDqUG4jWXjP6oY21uzek/Dv9ps+8B0iRZKLSu3nYshKuDLwjowGPDwUFVRcYa/b+stf0aCkKDoAD8p5aYw+wn7oboCYW0Us09+YLRVdV6EvV2smlXRCI874m5yrUMcfgZ9/zrvLnRkObA5FZnkL4unYrKFo1P+thKYA0UcXcd2Wo0LS0Wwl1AyJ4WEjNXALf/v/IMJyH4kv0np1ATFUkSKKusa4xXeoago= - - secure: S3hLW9oaoni+dx8804Yy0XAKBWR0jvD8a47Q3fy8ej+v1GAFucRjOC7Q7tlYcfG02zRrJ3+v7WuLySnxRmhAJqRrv2Hr7pHJiMA5BD/8potSe/914l3WxVpwLlVRWUaiUDCP28hDwsTGRQE7gb1yB9LHw7z+5ke8fkrTIpZ2xBS40ftFrlMk707UznQN6TVmR+8ehhVLKE6mStz3cp1e9NehMG3kgv8u8UIVCBRhihX4DwFmBu2VCAnDcTQazf21Yo/xEK+6ynQaLPqCUuRD1xsEOd6LraZ6qmU5OgdkYVaR7fN+iXoikHeMlgvtJqcdXv02ySVvlGQoiQZ36D44euDtmFADnDRs+fpDvIcnExwvnseQ7g6s7RnWwrQTOP3lIkWBmKwGnQXXSJzi9uB93i4kcTZZ7XQ+XAkUVf8kluZIa4+ImHM4zILJApEHGOZ5xK1JXl9EfSNucdeDVQZQgjW8og/rWsY3MyuXE74A28dZXb+mJaE0tk+SORYCo8duGv+betUQme1I619GTn3bb4RkvOyt64K2uOdF0xIozF6hyGYunb+7qYNiWJh33KD/2fbCNlIuVsukxxJpso4H7YMYzFZBfnUpszJfave7NTTCf89NGtcVuFGE5wUdWqyxSJSeIgeDTbZcz718TyDf0nLTE2ycgOy4f/FbKwMv19Y= - - secure: WAw4suqg2jRC79rJEu03yUpL/Wh0f2bm7QurfFiPPaAY5sTKsahJJVWPtkmFE6ikxCiP09t6s5K2ZnSGNRq7y9FKXRxUYELUqcnv9IbnLBRMfPImm7pzz7vLcOIK2YSx3vqK5Uwe2JTBnL848rRrDKlpUxYTzXffXlPxA0Urjvi4JtaD9FAolzLysrt5OaG0iS3C6ZLbg6CDB6PfoaLHo4DD0ppmPWOohNcW1bDdlCn6E5n9dKsf+kNuMJynyi/5UcOinHGAma6VKGLwAgb2yGLYSDeU3u8ttp2gHkf/lEUsHmF2DNAU6oTFQ7QUOWZNC/oJbI4V2KhG1DRF085/spszpPcG4HmhP5kdW3BWtiA0lV6o/SXvJSLaCNtT+i2PgqPR0DUaCJpWJpFQhp+lDMYcNwwba1G/ymSIEJDL7e1McYySiXoc4cK+MX+eh2jznOf17JFrMdIP8QcvHUA4wwEgBZoAbMD6GfGK2ggkNAUL2seQf1DrS6CD6BS67xwenqIfs8lCluB3nHtQG5ksaAVXcJiXjRsGeNGhI6QpsuyaMEKUTELKB0ne9SeVIktbBvss5B07Sbgo3fyIfmmxyHdm9Wp/b4wCrDhzA10jeRdzLCdl0uwI6sB4yKDdn7LwBpa5W7Cgn/u7PkmCR6rc9fCUTa3c7XvHNy1e8TV/jOo= - - secure: bHcgqObgneCeK8p8MNQyS87w+ecMxgrni0JmJI3XCf73BmxNuh/J2RvyHMbhKrm++OhC3XwASZu3COcCf2Y9b59/1Qrr1r+09ZqPXIrZzsIZWojD5NZWV1u7lIx7Y9f5TULDaYFmb+p7qv+yZZnDwq/ykjWNhB0gvroyGQs1gFH9WYXSnubfCfzewwvjuEPT5WPZqlW2LD/kCJRrQ3O7UAqwb7mF4ReKF88vrhjTkM396mDoTz90dBnzztY38jbGClYxT2eKnOjZqfUnyElvxaSSumMUhRdxfwiExe/JCKqXIzN5NvyLBs7c06yapRKRvnWgzQ+YkDzUQ53vaei5PyYPV0+x1LwwUH3c73eTgCvMTG6arxxpDuDGHxi7G7w4UXRuDNDORHeo7TMJDO6/22H9230+eMm866EOPcmUo/9Ln/qNV3RfYCL+PHFGs0NJ03RrkLJB/aGhZ+aIBUD7uYX1lQB5sHLYSB/i3gcWxygVWkOxk0zRjGSbgZRpcmJ2cZAn7yzFqByxTfmMoPYlX7pMU7SuYrTCaREak8H6LZefMAGKiOUx/c8mm+HcBj9xZYcIFvpyFsKZRfWoyO1Oj08ITI8nLv4YovC7GfdlIdOIZkFzS035LUvj8VYSMpRBno/8e8R0PFtuwIXpvZmqJ+GF3AuepU4BKHrzmH1pXOM= - - secure: unVuzBl1DD3M+PSUsDnjscJ+M2q9lrbrNcBwSC2KOVAqupaPpFAxgJH8GxD9HXY4TjvkUVLkb2bxWUByh9CZdMxfAPSwEtdZL8IMemW6kVSsBHkxwpmX75WWQTitRm69V7tAGOWlb3hmqc964rNwPfEAZsHVSrz7Xqg0GxGn+NAt8Ywt9Ut2awGcHhMmjGz4m8vB5RrOv5tKmioAzFJiaPgVIe5G5fE+CmGXS9iBisOv7yFutbh1oJ+5uV5HUelWwGK+ezbjQS2cPKdx3a7denfAhpXeaazelT+y2lyXdGkTLUpeKp8H00GDsH3R0r8LTkPC1hFu3qf1RDoQO1XgrNIQeURF0IEoU/IAzTmB7rEkBAOzWBjJF2D6JxF+7H2Fe1Zw0UOFD/tEkU1mNgB5VENewPmXwoIyHtUW55cAl+D6sy+K13TS3bCHwt4Zx0fd62/DaSbru32Wd7CsgeJj+cRRO5CI51drNDvZKG6TlQ0bEJeIn+sfmgY5xadRn3WKdZdXac6KQJYaMbkTOFBuvTKKSpTVnF8Vg853JPYH/V5PhUPwwTf4XGPxutAEz0l3XB1GG05uFZPGOrYa2Zmh6OK4cI11iLNeU7CI82eGSCKNAnNdMTLJpJM8t0fDlbaVuzIlr6S3FPyMjkk4VIRrOp6f7ERJNMEuhYhECKHFkN4= - - secure: hbksTVDPCGWdWYF2Dn6wDwQSE4Jsb5cDSinaBpTM5kxGSGAGg+eJRvxVhouiWoTrhhs1LuXlykwQNR51o34/dxk0rH9ujJ+z40hGnlWer7VjvHvYMoASH7ij588DzlWq98Jso+uZNV+ZmUCoN+lRNUBxU8sZBhFeJJWRUBZ0DeXrIf6l7zWf8JtnmoQqtwegGPqZb5q9jdIpWnstoGiIziLjIC3eUJFgIpTojLkrjC5GIFfZRAjHGRTii4QV+zsJm9yp5loSi8+etAutnDOL+Fr/HI7ap+1ahr0PzUTqbPoq5PpwUpBsaMBBMntaP7sTNi9/IwXd5DxjJPWkhQpD+uU3B/Jgz3X/QYvPD44HQXxyAIfcLIIg3kPY+fIVB5DjnKxzIqAPSHN2jRgR2LoxqXcJICHmu2YH+WOCyjhjN7Bcka1M4goDXhg+ssDzcs5DbT8h/aGPKx2qeXt9c9ZiCxNubWq/aBZxQfQAy5dx1kdtmAbZ5wEaFsjPsJ7t5/f/v3eDT3vtU6jPEEynNDwfHKDgksnC1xCQX9bqu0EQy2Q95vSjwDcLq8V83RUt5WP9ZKcdXNJ4LBrAgFG3OnvcqHCTf61G68mwmxF8Owdh8AIZ4IwA+XHFyvTlCw53BLe5mirPxCBojlllxfYrVE+38ab5gwYV2RplnHaAUbcAItg= - - secure: dB1a8wasDER3t86KYmtYIpcHX70lQqpTC9hOT3Su0xcSYOZphW29qNtfLfek24aCd3F6W9fzQp2aOhAne7EW07zsxqo2jzxWDMAnh/oMg3UAmkdqUgSLFiNxj5nlHwpjlINOsViEx7fofk0xXw4omBoybMne43xGt6F+bRRdqknCHLtE0qvrxASOPW5P66id//Na7vqV3hS7mulbsyNlRQESKQhhZyuJqgZ61u8wIG6vFWPOo3vkYKtfGkLWlzZ9CO2Wbrea9Oz6hC2cK/G9tiJEoVbs31fHir4qSyzje7GMO9XhKX4kjZQu9VutBQHPk2/q3Y5vl/e42stm9G9dtCnWNAbwRbxp6TnsmWOj0IEUCbvn1WJXUZdbVgCw5bbr3M1cNT3+DF1gXhtN9aWYnhd0OQtpdDGsnlwh4/qEeirum0ro9C8q71fEflNRvNzJxlPyHBIvqvKkKanVnVSwUlbseiPhJ/GIb3hUABLAv2UDvsAvuvomq9e/HKruyhGmiTPSeRRuDOQTCvpzsDD2DWOmvIOydGYG658cKmhs5MdNJxUiawB6Ow5S5FN0nbayTrTvnZGGXRESxHHPKBNTxvOw+0HWkY0qKqn9qPnyC09kVY/n3gLy3UcQANCYgSbG2hy8gyfih91kANOyD2vUrOq2kW9HhuQGargpzxKsepc= - - secure: FhJuMC66acr1Qvd4FEeah8Ke2QC8pfttU5Rt35yvOWNRbD/aSI7hdB++4OZFjMj7g7VH8q9zMdgdzJqclcNbz31dhAltDhUnuUep9ApHiFU4rqaxVGI3F44t1Zhbuc9LkJMvXscJVPOBJEF7Hl4m4nc1PFIifFz7QADLCVe69u9b7YcnLpWJXb2Uvs66WD/dF3oeZpsNe1KHSMEc1vCBurE1Wyqmxft7cy0naEOed00hpwi5r6sWDAfskHMjpe1SFiarvhWnoas9BwHCcPOYmsDiuSVexr0ERf91oariPJ/1mEN2B/Z85blT1RTbpnNDgjjZRzLzPwdOdtV7YV5jUXSurn1P8KoMJxYexQrNo205qi/mm+XnnHi+FUJPwwYxynoxUhtROXYbVllH/5Z03tfbjWfHEUYYo/bdcCONP8N5K4v3yhQA1i90jPkAzGprvIooe8bCqH8S1A1vw9Ieqqvoad2M0uJog1PpNmnx/otCMoL2IoHLXNYC0dmM6E0/blo88SpUFyvl2Dutn0JyO35Wwisw1o7jWvmzuc2j0zB4C0q+wjNuXEJjX7tLLHbjndB/qvOIDZQC9UNN6JOill1ZHa5LpqGPzyhUn9nYf11TpEOaS0Ph8/SqyidTXHusfAt0BVGM81UoHgzvr79pPXJlhYflam8JfTH/OLtIT/g= - - secure: ROy+3TE+nHM7QGyOM3WFbqTGLU9TLzwUeVCnQXnBXsB1ktpydUZUGzVJ+WJJbIRwEBMix2iPu43kEZQTud6gYA0asUbBkNThVzw0k5VoOOkhIWVYpD16KfSgZQn/qqD59fCfY2gQQ5WLp4Sr4f5hkBbeO024A//oo8AB46Qy62WFTXsjqc9hlE8jw2ovKrpg9R9CKefCYhkwu9yJqF9bbTX3wfXKduGvye1nhW3dknihIMsAkUpe3/6oiuGzfly6gxd+4/dIHOZ8C9eO/hOmIcahxR7g75fFlkhCxz1rI79Hc10wu2SYTkFGb8V/4G2eKC4y665ajyy8/YnpratuQswrbtxFVTLCJkHusF8sgO0WEMpZdcqXBD4ZS1CLXkCa3HIJoO6K0T6CK7i9qjJTth/+xGEkDIMn7LB564pFUYjzxCyH8mzdmnoIZNcIcDGvdKwClQZ+HdSIly+83dVAPaIMl4HOAeKf/cqBiVYT8a6UEYTK4B5cXLDcPrpk43O+JWS+bvUtmAZX43E2jhCmwOLU6QZT02QfZSUrZxcFf9bxqzBXl3+SBjVsxq7QyUr+eeySPmTiQsSh+KMjxklHOEIC1jAxVZvOewublC3fwuDq3q/LVkTkDRk16nZ66hA3R4WWfmxtAMgwNywSd0qi4KR/SbwMojnchmhWrs9DUYM= - - secure: U3p1MHXxewesrR4TcqoHYOrPxj84wvPrbAjLTm5KBj6jb6IhLCwjsCqCnQqBxKzDsQNHkf+8O1bLi2sAkqEGtzkDFgSwLbNLp6BKyG/ddxFzyiWiuusGig8MOrtCTymfCTSLqnu8hNjirl9M/NjUU43HOzYnlm1aDHr3ND2yGSoYA1xgFrA7DGm6UpEeuUBeQYEtzUwl+4fY9Q7XLY488x6+pYApC+fXZdnrF8Z6RIRV7tGR35jcLWCWhS5vch8jCX49aFyfH7K0rRFAKGO3sqeNeJfaL6+da6knxTEGTDGtqjC0Lzw9Y4hSwAD2tLJg2Dr27HW7v/p0yu4F5H5/0gf4pV2oSBYXxdtDrw4DxUYoPSXxt6O5BZ1MqB1KFaJwrlGbDXLH6SlUBns4btmBn5PW5sNw6r4BN1me3Nhpfp1DgPNRbVoJfpgEqnNjPiJFdluI6++eMI4cJGR6UPEdqCh60/MIFf5opjJIbyUWdjx36VTg/L7MFF2kV0NPVixGa1fVsrR52Uu53yaHMHVeREkVmZrP6kWriIDHPaNHON3GlQzraak8tPKKiKqfoO++rd5wybFmfHHbOagqqJHElf1SMBavg4j5CytR+ye8JSRCCw2Sh/q2BAcjIlf2SXy3q2Sm9AZ72O6sbcFGgIGvmjCgrU2INaVGBYUwaDDE1ME= - - secure: u5SPcT7HpetEO3LxOtqAUU4VJcmjc9cQg5m1IP8xrk6PdGjx3dIdD0VTydBVICJEtwGDaLY0YLa0Nr6hMnDACI4r5cyHdBuqrgFkib+YH20WL8qc2my77pkwO5QzgKnUd36WPW3pUD0j0eoZzEaixn5IjLi95TZsRCHgnrvmY86eKLgV8KLOlICR6ZcsOQICAEuEyBDuQJ5rWg20EA22XIw55eYYiTeFO4ZVHbwxW4XKTWjeK2WV304QAEWjZEUh2JJAuM79btMqvIDPYZ9Y2DhN4dgamYBnITT/g+lp6OEC4UGfbJbvDmrNFIGVfarLwT5EYtCtnmA8duphFwRVxl6ZCJy4WQfzC2OYV8MN3zlZP1FTc6C4UCZWb36ZExysUXd60pCOPKnSVdJsY/549aXOyTLSKzqEPASQlWRpyMb9BozdRFuGtk8Geo2G7kZjUw37xrLmS3fTlrLTkldYNZOOXS1ypL3q00l+UCpy6q+OGcV5l/k1/dGvgGL+ACus3630mih3VorzNrzCOSchCcArRzQkPhaSRuc7JD78ihqv7ERgbQJQreJYXAls3bjbRTbvEVNUJwXjg0wccz9Dtnus66lJp4guurRvJ4YM2+Hx05pbcvvfoTzdGTYX7VLPjXQyTwGd3fHDc9FYPHhX6yaEeZObhC7IBA0xdUsZaL0= -install: "/bin/true" -script: -- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then bash ./travis-build-pr.sh; fi -- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./travis-build.sh; fi -before_cache: -- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock -- rm -fr $HOME/.gradle/caches/*/plugin-resolution/ -cache: - directories: - - "$HOME/.gradle/caches/" - - "$HOME/.gradle/wrapper/" diff --git a/README.md b/README.md index 180e53cb..c135039b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Micronaut JMX -[![Maven Central](https://img.shields.io/maven-central/v/io.micronaut.configuration/micronaut-jmx.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22io.micronaut.configuration%22%20AND%20a:%22micronaut-jmx%22) -[![Build Status](https://travis-ci.org/micronaut-projects/micronaut-jmx.svg?branch=master)](https://travis-ci.org/micronaut-projects/micronaut-jmx) - +[![Maven Central](https://img.shields.io/maven-central/v/io.micronaut.jmx/micronaut-jmx.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22io.micronaut.jmx%22%20AND%20a:%22micronaut-jmx%22) This project includes support for exposing Micronaut management endpoints over JMX in [Micronaut](http://micronaut.io). diff --git a/build.gradle b/build.gradle index e0c48e54..c488d244 100644 --- a/build.gradle +++ b/build.gradle @@ -1,164 +1,63 @@ buildscript { repositories { + jcenter() + maven { url "https://dl.bintray.com/micronaut/core-releases-local" } maven { url "https://repo.grails.org/grails/core" } } dependencies { - classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "org.grails:grails-docs:$grailsVersion" - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' - classpath 'com.bmuschko:gradle-nexus-plugin:2.3.1' - classpath 'io.github.groovylang.groovydoc:groovydoc-gradle-plugin:1.0.1' - classpath "io.micronaut.docs:micronaut-docs-asciidoc-extensions:$micronautDocsVersion" - classpath "io.micronaut.docs:micronaut-docs-gradle-plugins:$micronautDocsVersion" + classpath "io.micronaut.build:micronaut-gradle-plugins:2.0.0.RC10" } } -plugins { - id 'com.github.hierynomus.license' version '0.14.0' apply false -} - -repositories { - mavenCentral() - maven { url "https://repo.grails.org/grails/core" } -} - -version project.projectVersion - -ext { - distInstallDir = file("$buildDir/dist-tmp") - homeBinDir = file("bin") - homeLibDir = file("lib") - homeSrcDir = file("src") -} - subprojects { Project subproject -> + group "io.micronaut.jmx" - version project.projectVersion - group "io.micronaut.configuration" - ext { - isConfiguration = subproject.projectDir.parentFile.name == 'configurations' - isBuildSnapshot = version.toString().endsWith("-SNAPSHOT") - } - + apply plugin: "io.micronaut.build.common" - repositories { - maven { url "https://repo.grails.org/grails/core" } - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } + micronautBuild { + enforcedPlatform = true } - apply plugin: "groovy" - apply plugin: "java" - - sourceCompatibility = '1.8' - targetCompatibility = '1.8' - apply from: "https://raw.githubusercontent.com/micronaut-projects/micronaut-build/v${micronautBuildVersion}/publishing.gradle" - - jar { - manifest { - attributes('Automatic-Module-Name': "${subproject.group}.${subproject.name}".replaceAll('[^\\w\\.\\$_]', "_")) - attributes('Implementation-Version': projectVersion) - attributes('Implementation-Title': title) - } + if (subproject.parent.name == "examples" || subproject.name == "examples") { + return } - bintray.publish = true - - tasks.withType(Test) { - jvmArgs '-Duser.country=US' - jvmArgs '-Duser.language=en' - testLogging { - exceptionFormat = 'full' - } - afterSuite { - System.out.print(".") - System.out.flush() - } - - reports.html.enabled = !System.getenv("GITHUB_ACTIONS") - reports.junitXml.enabled = !System.getenv("GITHUB_ACTIONS") + apply plugin: "io.micronaut.build.dependency-updates" + if (!subproject.name.startsWith("test-suite")) { + apply plugin: "io.micronaut.build.publishing" } - configurations { - documentation - all { - resolutionStrategy.eachDependency { DependencyResolveDetails details -> - String group = details.requested.group - if (group == 'org.codehaus.groovy') { - details.useVersion(groovyVersion) - } - } - } - } dependencies { - annotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion") - testAnnotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion") - implementation platform("io.micronaut:micronaut-bom:$micronautVersion") - - documentation "org.codehaus.groovy:groovy-templates:$groovyVersion" - documentation "org.codehaus.groovy:groovy-dateutil:$groovyVersion" + annotationProcessor "io.micronaut:micronaut-inject-java" + annotationProcessor "io.micronaut.docs:micronaut-docs-asciidoc-config-props:$micronautDocsVersion" + annotationProcessor "io.micronaut:micronaut-graal" + api "io.micronaut:micronaut-inject" + + testAnnotationProcessor "io.micronaut:micronaut-inject-java" testImplementation("org.spockframework:spock-core:${spockVersion}") { - exclude module: 'groovy-all' + exclude module:'groovy-all' } - testImplementation "cglib:cglib-nodep:3.3.0" - testImplementation "org.objenesis:objenesis:3.1" - - testRuntime "ch.qos.logback:logback-classic:1.2.3" - testImplementation "org.codehaus.groovy:groovy-test:$groovyVersion" - } - - groovydoc { - classpath += project.configurations.documentation - } - - task allDeps(type: DependencyReportTask) {} - - apply plugin: 'checkstyle' - - checkstyle { - toolVersion = 8.16 - configFile = rootProject.file('config/checkstyle/checkstyle.xml') - - // Per submodule - maxErrors = 1 - maxWarnings = 10 - - showViolations = true - } - - checkstyleTest.enabled = false - - tasks.withType(GroovyCompile) { - groovyOptions.forkOptions.jvmArgs.add('-Dgroovy.parameters=true') - } - tasks.withType(JavaCompile) { - options.encoding = "UTF-8" - options.compilerArgs.add('-parameters') + testImplementation "io.micronaut.test:micronaut-test-spock:$micronautTestVersion" } } -apply from:"https://raw.githubusercontent.com/micronaut-projects/micronaut-docs/v${micronautDocsVersion}/gradle/docs.gradle" -allprojects { - apply plugin: 'idea' +apply plugin: "io.micronaut.build.docs" +apply plugin: "io.micronaut.build.dependency-updates" - idea { - module { - outputDir file('build/classes/java/main') - testOutputDir file('build/classes/groovy/test') +dependencyUpdates.resolutionStrategy { + componentSelection { rules -> + rules.all { ComponentSelection selection -> + boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm', 'preview', 'b', 'ea'].any { qualifier -> + selection.candidate.version ==~ /(?i).*[.-]$qualifier[.\d-+]*/ + } + if (rejected) { + selection.reject('Release candidate') + } } } - if (it.name.contains('example') || it.name.startsWith('benchmark')) { - return - } - apply from: rootProject.file('gradle/license.gradle') } -project.afterEvaluate { - allprojects.repositories.each { handler -> - handler.each { - if (it.url.toString().startsWith("http://")) { - throw new GradleException("Build should not define insecure HTTP-based Maven repostories") - } - } - } -} \ No newline at end of file + + + diff --git a/gradle.properties b/gradle.properties index 02581c67..d4e46236 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,25 @@ -projectVersion=1.2.1.BUILD-SNAPSHOT +projectVersion=2.0.0.BUILD-SNAPSHOT +micronautDocsVersion=1.0.23 +micronautVersion=1.3.5 +micronautTestVersion=1.1.5 +groovyVersion=2.5.11 +spockVersion=1.3-groovy-2.5 +# Or: +#groovyVersion=2.5.11 +#spockVersion=1.3-groovy-2.5 + +title=Micronaut JMX +projectDesc=Integrates JMX Monitoring +projectUrl=https://micronaut.io +githubSlug=micronaut-projects/micronaut-jmx developers=Graeme Rocher + +# This project's branch githubBranch=master -githubSlug=micronaut-projects/micronaut-jmx -grailsVersion=3.2.9 -groovyVersion=2.5.6 -micronautDocsVersion=1.0.22 -micronautBuildVersion=1.0.0 -micronautVersion=1.3.0 -projectDesc=Provides JMX support for Micronaut services -projectUrl=http://micronaut.io -spockVersion=1.2-groovy-2.5 -title=Micronaut JMX Configuration +# Micronaut core branch for BOM pull requests +githubCoreBranch=master + +bomProperty=micronautJmxVersion -# TODO - This is required for now because -# of https://github.com/micronaut-projects/micronaut-docs/blob/v1.0.0.M4/gradle/docs.gradle#L260 -kafkaVersion=NA +org.gradle.caching=true diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/JmxConfiguration.java b/jmx/src/main/java/io/micronaut/configuration/jmx/JmxConfiguration.java index f64c558e..04a89c82 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/JmxConfiguration.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/JmxConfiguration.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/MBeanServerFactoryBean.java b/jmx/src/main/java/io/micronaut/configuration/jmx/MBeanServerFactoryBean.java index 191af25a..4e8026c3 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/MBeanServerFactoryBean.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/MBeanServerFactoryBean.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/context/AbstractDynamicMBeanFactory.java b/jmx/src/main/java/io/micronaut/configuration/jmx/context/AbstractDynamicMBeanFactory.java index ccc58331..b7a12222 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/context/AbstractDynamicMBeanFactory.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/context/AbstractDynamicMBeanFactory.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/context/DefaultNameGenerator.java b/jmx/src/main/java/io/micronaut/configuration/jmx/context/DefaultNameGenerator.java index dc04befa..2ffadf82 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/context/DefaultNameGenerator.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/context/DefaultNameGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/context/DynamicMBeanFactory.java b/jmx/src/main/java/io/micronaut/configuration/jmx/context/DynamicMBeanFactory.java index 56c5671a..9274f8b6 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/context/DynamicMBeanFactory.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/context/DynamicMBeanFactory.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/context/NameGenerator.java b/jmx/src/main/java/io/micronaut/configuration/jmx/context/NameGenerator.java index 977e8bd3..f67e47bd 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/context/NameGenerator.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/context/NameGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/context/package-info.java b/jmx/src/main/java/io/micronaut/configuration/jmx/context/package-info.java index 6dfcf854..8f57021f 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/context/package-info.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/context/package-info.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMBeanFactory.java b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMBeanFactory.java index 9c915c20..f6418c9d 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMBeanFactory.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMBeanFactory.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMethodJmxProcessor.java b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMethodJmxProcessor.java index 4ab6523d..7501ae49 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMethodJmxProcessor.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointMethodJmxProcessor.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointNameGenerator.java b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointNameGenerator.java index 3d4fc22a..c85d82be 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointNameGenerator.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/EndpointNameGenerator.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/package-info.java b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/package-info.java index 12e77b23..f905f7fa 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/package-info.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/endpoint/package-info.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/jmx/src/main/java/io/micronaut/configuration/jmx/package-info.java b/jmx/src/main/java/io/micronaut/configuration/jmx/package-info.java index 9889d600..7e618c02 100644 --- a/jmx/src/main/java/io/micronaut/configuration/jmx/package-info.java +++ b/jmx/src/main/java/io/micronaut/configuration/jmx/package-info.java @@ -1,11 +1,11 @@ /* - * Copyright 2017-2019 original authors + * Copyright 2017-2020 original authors * * Licensed 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 + * https://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, diff --git a/src/main/docs/guide/setup.adoc b/src/main/docs/guide/setup.adoc index a81194af..7f53568b 100644 --- a/src/main/docs/guide/setup.adoc +++ b/src/main/docs/guide/setup.adoc @@ -1 +1 @@ -dependency:io.micronaut.configuration:micronaut-jmx[version="{version}"] +dependency:io.micronaut.jmx:micronaut-jmx[version="{version}"] diff --git a/travis-build-pr.sh b/travis-build-pr.sh deleted file mode 100755 index 5294da0d..00000000 --- a/travis-build-pr.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e -EXIT_STATUS=0 - -./gradlew check --no-daemon || EXIT_STATUS=$? - -exit $EXIT_STATUS diff --git a/travis-build.sh b/travis-build.sh deleted file mode 100755 index d48c1b64..00000000 --- a/travis-build.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash -set -e -EXIT_STATUS=0 - -if [ "${TRAVIS_JDK_VERSION}" == "openjdk11" ] ; then - echo "Check for branch $TRAVIS_BRANCH JDK: $TRAVIS_JDK_VERSION" - ./gradlew testClasses --no-daemon || EXIT_STATUS=$? - - if [ $EXIT_STATUS -ne 0 ]; then - exit $EXIT_STATUS - fi - - ./gradlew --stop - ./gradlew check --no-daemon || EXIT_STATUS=$? - - if [ $EXIT_STATUS -ne 0 ]; then - exit $EXIT_STATUS - fi - - ./gradlew --stop - ./gradlew assemble --no-daemon || EXIT_STATUS=$? - - exit $EXIT_STATUS -fi - -git config --global user.name "$GIT_NAME" -git config --global user.email "$GIT_EMAIL" -git config --global credential.helper "store --file=~/.git-credentials" -echo "https://$GH_TOKEN:@github.com" > ~/.git-credentials - -if [[ $EXIT_STATUS -eq 0 ]]; then - if [[ -n $TRAVIS_TAG ]]; then - echo "Skipping Tests to Publish Release" - ./gradlew pTML assemble --no-daemon || EXIT_STATUS=$? - else - ./gradlew --stop - ./gradlew testClasses --no-daemon || EXIT_STATUS=$? - - ./gradlew --stop - ./gradlew check --no-daemon || EXIT_STATUS=$? - fi -fi - -if [[ $EXIT_STATUS -eq 0 ]]; then - echo "Publishing archives for branch $TRAVIS_BRANCH" - if [[ -n $TRAVIS_TAG ]] || [[ $TRAVIS_BRANCH =~ ^master$ && $TRAVIS_PULL_REQUEST == 'false' ]]; then - - echo "Publishing archives" - ./gradlew --stop - if [[ -n $TRAVIS_TAG ]]; then - ./gradlew bintrayUpload --no-daemon --stacktrace || EXIT_STATUS=$? - if [[ $EXIT_STATUS -eq 0 ]]; then - ./gradlew synchronizeWithMavenCentral --no-daemon - fi - else - ./gradlew publish --no-daemon --stacktrace || EXIT_STATUS=$? - fi - - if [[ $EXIT_STATUS -eq 0 ]]; then - ./gradlew --console=plain --no-daemon docs || EXIT_STATUS=$? - - git clone https://${GH_TOKEN}@github.com/micronaut-projects/micronaut-jmx.git -b gh-pages gh-pages --single-branch > /dev/null - - cd gh-pages - - # If this is the master branch then update the snapshot - if [[ $TRAVIS_BRANCH =~ ^master|[12]\..\.x$ ]]; then - mkdir -p snapshot - cp -r ../build/docs/. ./snapshot/ - - git add snapshot/* - fi - - - # If there is a tag present then this becomes the latest - if [[ -n $TRAVIS_TAG ]]; then - mkdir -p latest - cp -r ../build/docs/. ./latest/ - git add latest/* - - version="$TRAVIS_TAG" - version=${version:1} - majorVersion=${version:0:4} - majorVersion="${majorVersion}x" - - mkdir -p "$version" - cp -r ../build/docs/. "./$version/" - git add "$version/*" - - mkdir -p "$majorVersion" - cp -r ../build/docs/. "./$majorVersion/" - git add "$majorVersion/*" - - fi - - git commit -a -m "Updating docs for Travis build: https://travis-ci.org/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" && { - git push origin HEAD || true - } - cd .. - - rm -rf gh-pages - fi - fi -fi - -exit $EXIT_STATUS