blob: 4917fb9a5d0375cfbc2929b0321cd631be066bf0 [file] [log] [blame]
#!/bin/bash
# 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.
if [[ -z `which xpath 2> /dev/null` ]]; then
echo "ERROR: xpath not found in path, install xpath first"
exit
fi
DIR=$(cd "$(dirname "$0")" && pwd)
TOP_DIR=$DIR/..
function echo_separator {
echo "======================"
}
function parse_profiles {
all_profiles=""
poms=$(find $TOP_DIR -name pom.xml)
for pom in $poms; do
# Returns something like:
# <id>hadoop_0.20.203</id><id>hadoop_1.0</id><id>hadoop_non_secure</id> ...
profiles=$(xpath $pom '//project/profiles/profile/id' 2> /dev/null)
# Transform into:
# hadoop_0.20.203 hadoop_1.0 ...
profiles=${profiles//<\/id>/}
profiles=${profiles//<id>/ }
# Append to accumulating list
all_profiles="$all_profiles $profiles"
done
# Sort and uniq the whole list
all_profiles=$(echo "$all_profiles" | tr -s ' ' "\n" | sort | uniq)
}
parse_profiles
echo "Running on profiles: $all_profiles"
results_file=$TOP_DIR/for-each-profile-results.txt
echo "mvn -P<profile> $@" > $results_file
echo "======================================================" >> $results_file
for profile in $all_profiles; do
echo_separator
echo "=== $profile ==="
echo_separator
args="-P$profile $@"
mvn $args
result=$?
if [[ $result -ne 0 ]]; then
echo_separator
echo "=== Failed on profile: $profile"
echo "=== Failed command: mvn $args"
echo "$profile: FAILED" >> $results_file
echo_separator
else
echo "$profile: SUCCESS" >> $results_file
fi
done