#!/bin/bash # Compares the ant jars to the maven jars and makes sure they're the same # (or different where/how expected) # Build everything first. function cleanAndBuild { mvn clean ant clean.all ant no_aop ant dist test.dist mvn package cd build/no_aop ant dist test.dist cd ../.. } function findAndCompareJars { version=3.0 for ANT in `find -name "*-snapshot.jar" -path "./build/dist/*"` do if [ $ANT = "./build/dist/guice-snapshot.jar" ]; then #Check main build MVN=./core/target/guice-$version-SNAPSHOT.jar extension=core compareJars "$ANT" "$MVN" $extension compareJars "./build/no_aop/$ANT" "./core/target/guice-$version-SNAPSHOT-no_aop.jar" "no_aop: $extension" #also compare no_aop core else # Check extensions extension=`echo $ANT | awk -F"-" '{print $2 }'` MVN=./extensions/$extension/target/guice-$extension-$version-SNAPSHOT.jar compareJars "$ANT" "$MVN" $extension fi done; } function compareJars { ANT=$1 MVN=$2 extension=$3 echo Comparing $3 mkdir tmp$$ cp $ANT tmp$$/ant.jar cp $MVN tmp$$/mvn.jar cd tmp$$ mkdir ant mkdir mvn cd ant jar -xf ../ant.jar cd .. cd mvn jar -xf ../mvn.jar cd .. # ant puts LICENSE & NOTICE files in a different place echo LICENSE > excludes echo NOTICE >> excludes # ant does not create DEPENDENCIES echo DEPENDENCIES >> excludes # ant/mvn slightly different in MANIFEST.MF echo MANIFEST.MF >> excludes # ant leaves empty directories for some jarjar'd paths -- # we grep -v instead of exclude because we want to make sure # if any files in those directories exist, that they're diff'd diff -u --recursive -Xexcludes ant mvn | grep -v "Only in ant/com/google/inject/internal/asm: signature" | grep -v "Only in ant/com/google/inject/internal/cglib: beans" | grep -v "Only in ant/com/google/inject/internal/cglib: transform" | grep -v "Only in ant/com/google/inject/internal/cglib: util" cd .. rm -rf "tmp$$" } cleanAndBuild echo "Starting to compare jars... Check the output closely!" echo findAndCompareJars echo echo "If the only thing that printed out is 'Comparing ', then you're good!"