mirror of https://github.com/apache/flink.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.4 KiB
Bash
90 lines
3.4 KiB
Bash
#!/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
|
|
|