diff --git a/maven-wrapper/.mvn/wrapper/MavenWrapperDownloader.java b/maven-wrapper/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000000..1db0a9e5ba --- /dev/null +++ b/maven-wrapper/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,38 @@ +import java.net.*; +import java.io.*; +import java.nio.channels.*; + +public class MavenWrapperDownloader { + + public static void main(String args[]) { + System.out.println("- Downloader started"); + String url="http://central.maven.org/maven2/io/takari/maven-wrapper/0.2.1/maven-wrapper-0.2.1.jar"; + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + File outputFile = new File(baseDirectory.getAbsolutePath(), ".mvn/wrapper/maven-wrapper.jar"); + if(!outputFile.getParentFile().exists()) { + outputFile.getParentFile().mkdirs(); + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + public static void downloadFileFromURL(String urlString, File destination) throws Exception { + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/maven-wrapper/mvnw b/maven-wrapper/mvnw index 9e810d3654..9b4e98ecea 100755 --- a/maven-wrapper/mvnw +++ b/maven-wrapper/mvnw @@ -200,70 +200,44 @@ if [ -z "$BASE_DIR" ]; then exit 1; fi +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## + +JAR_URL="http://central.maven.org/maven2/io/takari/maven-wrapper/0.2.1/maven-wrapper-0.2.1.jar" if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then echo "Found .mvn/wrapper/maven-wrapper.jar" else echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - - javaClass="/tmp/MavenWrapperDownloader.java" - if [ ! -e "$javaClass" ]; then - echo " - Generating MavenWrapperDownloader.java ..." - # Generating downloader application java class ... - cat <"$javaClass" -import java.net.*; -import java.io.*; -import java.nio.channels.*; - -public class MavenWrapperDownloader { - - public static void main(String args[]) { - System.out.println("- Downloader started"); - String url="http://central.maven.org/maven2/io/takari/maven-wrapper/0.2.1/maven-wrapper-0.2.1.jar"; - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - File outputFile = new File(baseDirectory.getAbsolutePath(), ".mvn/wrapper/maven-wrapper.jar"); - if(!outputFile.getParentFile().exists()) { - outputFile.getParentFile().mkdirs(); - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); - try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); - } - } - - public static void downloadFileFromURL(String urlString, File destination) throws Exception { - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); - } - -} -EOF + if which wget >/dev/null; then + echo "Found wget ... using wget" + wget ‐‐output-document=.mvn/wrapper/maven-wrapper.jar "$JAR_URL" + elif which curl >/dev/null; then + echo "Found curl ... using curl" + curl -o .mvn/wrapper/maven-wrapper.jar "$JAR_URL" + else + echo "Falling back to using Java to download" + javaClass=".mvn/wrapper/MavenWrapperDownloader.java" + if [ -e "$javaClass" ]; then + if [ ! -e ".mvn/wrapper/MavenWrapperDownloader.class" ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e ".mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + echo " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi fi - - classFile=$(dirname "$javaClass")/MavenWrapperDownloader.class - if [ ! -e "$classFile" ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") - fi - - # Running the downloader - echo " - Running MavenWrapperDownloader.java ..." - echo "$MAVEN_PROJECTBASEDIR" - ("$JAVA_HOME/bin/java" -cp /tmp MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") fi +########################################################################################## +# End of extension +########################################################################################## + export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} if [ "$MVNW_VERBOSE" = true ]; then echo $MAVEN_PROJECTBASEDIR