/*Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE filedistributed with this work for additional informationregarding copyright ownership. The ASF licenses this fileto you under the Apache License, Version 2.0 (the"License"); you may not use this file except in compliancewith the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing,software distributed under the License is distributed on an"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, either express or implied. See the License for thespecific language governing permissions and limitationsunder the License.*/importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.net.URL;importjava.nio.channels.Channels;importjava.nio.channels.ReadableByteChannel;importjava.util.Properties;publicclassMavenWrapperDownloader{/** * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */privatestaticfinalStringDEFAULT_DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";/** * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to * use instead of the default one. */privatestaticfinalStringMAVEN_WRAPPER_PROPERTIES_PATH=".mvn/wrapper/maven-wrapper.properties";/** * Path where the maven-wrapper.jar will be saved to. */privatestaticfinalStringMAVEN_WRAPPER_JAR_PATH=".mvn/wrapper/maven-wrapper.jar";/** * Name of the property which should be used to override the default download url for the wrapper. */privatestaticfinalStringPROPERTY_NAME_WRAPPER_URL="wrapperUrl";publicstaticvoidmain(Stringargs[]){System.out.println("- Downloader started");FilebaseDirectory=newFile(args[0]);System.out.println("- Using base directory: "+baseDirectory.getAbsolutePath());// If the maven-wrapper.properties exists, read it and check if it contains a custom// wrapperUrl parameter.FilemavenWrapperPropertyFile=newFile(baseDirectory,MAVEN_WRAPPER_PROPERTIES_PATH);Stringurl=DEFAULT_DOWNLOAD_URL;if(mavenWrapperPropertyFile.exists()){FileInputStreammavenWrapperPropertyFileInputStream=null;try{mavenWrapperPropertyFileInputStream=newFileInputStream(mavenWrapperPropertyFile);PropertiesmavenWrapperProperties=newProperties();mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);url=mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL,url);}catch(IOExceptione){System.out.println("- ERROR loading '"+MAVEN_WRAPPER_PROPERTIES_PATH+"'");}finally{try{if(mavenWrapperPropertyFileInputStream!=null){mavenWrapperPropertyFileInputStream.close();}}catch(IOExceptione){// Ignore ...}}}System.out.println("- Downloading from: : "+url);FileoutputFile=newFile(baseDirectory.getAbsolutePath(),MAVEN_WRAPPER_JAR_PATH);if(!outputFile.getParentFile().exists()){if(!outputFile.getParentFile().mkdirs()){System.out.println("- ERROR creating output direcrory '"+outputFile.getParentFile().getAbsolutePath()+"'");}}System.out.println("- Downloading to: "+outputFile.getAbsolutePath());try{downloadFileFromURL(url,outputFile);System.out.println("Done");System.exit(0);}catch(Throwablee){System.out.println("- Error downloading");e.printStackTrace();System.exit(1);}}privatestaticvoiddownloadFileFromURL(StringurlString,Filedestination)throwsException{URLwebsite=newURL(urlString);ReadableByteChannelrbc;rbc=Channels.newChannel(website.openStream());FileOutputStreamfos=newFileOutputStream(destination);fos.getChannel().transferFrom(rbc,0,Long.MAX_VALUE);fos.close();rbc.close();}}