mizdebsk / rpms / maven

Forked from rpms/maven 5 years ago
Clone
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
: