-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmvn-incremental
46 lines (39 loc) · 1.24 KB
/
mvn-incremental
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash
echo "----------------------------------------"
echo " jfactory incremental build"
echo "----------------------------------------"
COMPLETE_BUILD="false"
while [[ -n "$1" ]]; do
case "$1" in
--complete-build)
COMPLETE_BUILD="true"
shift
;;
esac
shift
done
git show --pretty="format:" --name-only HEAD --relative | sed -re'/^$/d' | while read a; do dirname "$a"; done | sort -u > file.list
if [[ -x "/usr/share/maven/bin/mvn" ]]; then
MVN="/usr/share/maven/bin/mvn"
else
MVN="mvn"
fi
MVN="$MVN $MAVEN_OPTIONS"
root_dir="$(pwd)/"
if [[ $COMPLETE_BUILD == "true" ]]; then
echo "Compiling all projects"
exec ${MVN} ${MVN_COMPILE_GOALS}
else
OLD_IFS=$IFS
IFS=$'\n'
MODULES_TO_BUILD=""
for MODULE in $(find . -name "pom.xml" | grep -v "target/" | sed -re's,^\./,,' | while read a; do dirname "$a"; done | sort -u); do
if grep -F "$MODULE" "${root_dir}/file.list"; then
MODULES_TO_BUILD="${MODULES_TO_BUILD}${MODULES_TO_BUILD:+,}${MODULE}"
fi
done
IFS=$OLD_IFS
echo "Compiling incrementally"
echo "${MVN} ${MVN_COMPILE_GOALS} -amd -pl $MODULES_TO_BUILD"
exec ${MVN} ${MVN_COMPILE_GOALS} -amd -pl $MODULES_TO_BUILD
fi