maven/maven-script-rpmbuild

94 lines
2.7 KiB
Plaintext
Raw Normal View History

#!/bin/bash
if [ -f /usr/share/java-utils/java-functions ] ; then
. /usr/share/java-utils/java-functions
set_jvm
set_javacmd
fi
function install_metadata()
{
mkdir -p "$1"
tar xf /usr/share/maven/repo-metadata.tar.xz -C "$1"
}
function help()
{
echo "mvn-rpmbuild [options] [<goal(s)>] [<phase(s)>]"
echo
echo "mvn-rpmbuild is custom Fedora maven used for building maven projects"
echo "using only jar files provided by rpms installed on your system. It will"
echo "never download artifacts from remote repositories. You can modify its"
echo "behaviour using several environment variables:"
echo
echo "-Dmaven.repo.local [default:$(pwd)/.m2] - custom location of maven repository"
echo "-Dmaven.local.depmap.file - file containing custom dependency mapping between"
echo " groupId:artifactId and jar file. File format see:"
echo " http://fedoraproject.org/wiki/Java/JPPMavenReadme"
echo "-Dmaven.local.debug - if set maven will print additional resolving information"
echo " that can be useful for debugging resolver problems"
}
# add maven.repo.local if it's not defined already
local_add="-Dmaven.repo.local=$(pwd)/.m2/"
# Check whether we are ran in mock
# FIXME: is there a better way to do this?
mock=test
test "$HOME" = /builddir && mock=:
if $mock; then
log_file="$(umask 2 && mktemp -t mvn-rpmbuild.$$.XXXXXXXXXX)"
logfile_add="-Dmaven.resolver.logfile=$log_file"
fi
function process_args()
{
while [ $# != 0 ]; do
flag="$1"
case "$flag" in
-h|--help)
help
;;
*) ind=`expr match "$flag" -Dmaven.repo.local=`
if [[ $ind != 0 ]];then
install_metadata "${flag/-Dmaven.repo.local=/}/"
local_add=""
fi
;;
esac
shift
done
}
process_args "$@"
if [ -n "$local_add" ];then
install_metadata "${local_add/-Dmaven.repo.local=/}/"
fi
export M2_HOME=/usr/share/maven
echo $JAVA_HOME
export JAVA_HOME
# can't put it on command line due to
# http://jira.codehaus.org/browse/SUREFIRE-121
export MAVEN_OPTS="$MAVEN_OPTS -Dmaven.local.mode ${local_add} ${logfile_add}"
$M2_HOME/bin/mvn -o "$@" || exit $?
$mock || exit 0
sanitize() {
for obj in $1; do
echo -n 'mvn-rpmbuild: possibly redundant dependency: '
rpm -qf "$(readlink -f $obj)" | sed 's/-[^-]*-[^-]*$//'
done | sort -u
}
installed=$(sanitize "$(rpm -ql `package-cleanup --all --leaves | xargs` | egrep '\.(jar|pom)$')")
used=$(sanitize "$(cat $log_file 2>/dev/null)")
diff - /dev/fd/3 <<<"$installed" 3<<<"$used" | grep '^< ' | sed s/..//
: