diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index aed3a5713..8d21f4666 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -8,6 +8,7 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: false requiredStatusCheckContexts: + - units (7) - units (8) - units (11) - windows diff --git a/.github/workflows/ci-java7.yaml b/.github/workflows/ci-java7.yaml new file mode 100644 index 000000000..2c8257d45 --- /dev/null +++ b/.github/workflows/ci-java7.yaml @@ -0,0 +1,62 @@ +# Copyright 2022 Google LLC +# +# 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. +# Github action job to test core java library features on +# downstream client libraries before they are released. +on: + push: + branches: + - main + pull_request: +name: ci-java7 +jobs: + units: + name: "units (7)" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v1 + # setup-java v2 or higher does not have version 1.7 + with: + version: 1.7 + architecture: x64 + - run: | + java -version + # This value is used in "-Djvm=" later + echo "JAVA7_HOME=${JAVA_HOME}" >> $GITHUB_ENV + - uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: temurin + - name: Set up Maven + uses: stCarolas/setup-maven@v4.5 + with: + maven-version: 3.8.8 + - name: Build + shell: bash + run: | + # Leveraging surefire's jvm option, running the test on Java 7. + # Surefire plugin 2.22.2 is the last version for Java 7. Newer version would fail with + # "UnsupportedClassVersionError: org/apache/maven/surefire/booter/ForkedBooter" error. + + # Why are these modules are skipped? + # google-http-client-jackson2 and google-http-client-appengine do not work with Java 7 + # any more because of Jackson and appengine library are compiled for Java 8. + # dailymotion-simple-cmdline-sample and google-http-client-assembly depend on + # google-http-client-jackson2 + mvn --batch-mode --show-version -ntp test \ + --projects '!google-http-client-jackson2,!google-http-client-appengine,!samples/dailymotion-simple-cmdline-sample,!google-http-client-assembly' \ + -Dclirr.skip=true -Denforcer.skip=true -Dmaven.javadoc.skip=true \ + -Dgcloud.download.skip=true -T 1C \ + -Dproject.surefire.version=2.22.2 \ + -Djvm=${JAVA7_HOME}/bin/java diff --git a/README.md b/README.md index b9aa0f867..ab51e6e53 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ content. The JSON and XML libraries are also fully pluggable, and they include s The library supports the following Java environments: - Java 7 or higher + - The google-http-client-jackson2 and google-http-client-appengine modules require Java 8 or + higher due to their dependencies. - Android 4.4 (Kit Kat) - GoogleAppEngine Google App Engine diff --git a/pom.xml b/pom.xml index 6e2a49048..e48f69f06 100644 --- a/pom.xml +++ b/pom.xml @@ -326,7 +326,7 @@ maven-surefire-plugin - 3.0.0-M7 + ${project.surefire.version} -Xmx1024m sponge_log @@ -581,6 +581,7 @@ 4.4.16 0.31.1 .. + 3.0.0-M7 false