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