| #!/usr/bin/env bash |
| |
| # |
| # 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. |
| # |
| |
| ## |
| ## Checks for correct Scala suffixes on the Maven artifact names |
| ## |
| # |
| # Flink must only use one version of the Scala library in its classpath. The |
| # Scala library is compatible across minor versions, i.e. any 2.10.X release |
| # may be freely mixed. However, 2.X and 2.Y are not compatible with each other. |
| # That's why we suffix the Maven modules which depend on Scala with the Scala |
| # major release version. |
| # |
| # This script uses Maven's dependency plugin to get a list of modules which |
| # depend on the Scala library. Further, it checks whether all modules have |
| # correct suffixes, i.e. modules with Scala dependency should carry a suffix |
| # but modules without Scala should be suffix-free. |
| # |
| # Prior to executing the script it is advised to run 'mvn clean install -DskipTests' |
| # to build and install the latest version of Flink. |
| # |
| # The script uses 'mvn dependency:tree -Dincludes=org.scala-lang' to list Scala |
| # dependent modules. |
| |
| |
| usage() { |
| echo "Usage: $0" |
| echo "" |
| echo "The environment variable MVN is used to specify the Maven binaries; defaults to 'mvnw'." |
| echo "See further details in the JavaDoc of ScalaSuffixChecker." |
| } |
| |
| while getopts 'h' o; do |
| case "${o}" in |
| h) |
| usage |
| exit 0 |
| ;; |
| esac |
| done |
| |
| MVN=${MVN:-./mvnw} |
| |
| echo "--- Flink Scala Dependency Analyzer ---" |
| echo "Analyzing modules for Scala dependencies using 'mvn dependency:tree'." |
| echo "If you haven't built the project, please do so first by running \"mvn clean install -DskipTests\"" |
| |
| dependency_plugin_output=/tmp/dependency_tree_scala.txt |
| |
| # run with -T1 because our maven output parsers don't support multi-threaded builds |
| $MVN dependency:tree -Dincludes=org.scala-lang,:*_2.1*:: ${MAVEN_ARGUMENTS} -T1 > "${dependency_plugin_output}" |
| EXIT_CODE=$? |
| |
| if [ $EXIT_CODE != 0 ]; then |
| cat ${dependency_plugin_output} |
| echo "==============================================================================" |
| echo "Suffix Check failed. The dependency tree could not be determined. See previous output for details." |
| echo "==============================================================================" |
| exit $EXIT_CODE |
| fi |
| |
| $MVN -pl tools/ci/flink-ci-tools exec:java exec:java -Dexec.mainClass=org.apache.flink.tools.ci.suffixcheck.ScalaSuffixChecker -Dexec.args="${dependency_plugin_output} $(pwd)" |
| EXIT_CODE=$? |
| |
| if [ $EXIT_CODE != 0 ]; then |
| echo "==============================================================================" |
| echo "Suffix Check failed. See previous output for details." |
| echo "==============================================================================" |
| exit $EXIT_CODE |
| fi |
| |
| exit 0 |
| |