github.com/jfrog/jfrog-cli-core/v2@v2.52.0/tests/testdata/maven-example-with-wrapper/.mvn/wrapper/MavenWrapperDownloader.java (about)

     1  /*
     2   * Copyright 2007-present the original author or authors.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *      http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  import java.net.*;
    17  import java.io.*;
    18  import java.nio.channels.*;
    19  import java.util.Properties;
    20  
    21  public class MavenWrapperDownloader {
    22  
    23      private static final String WRAPPER_VERSION = "0.5.6";
    24      /**
    25       * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
    26       */
    27      private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
    28          + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
    29  
    30      /**
    31       * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
    32       * use instead of the default one.
    33       */
    34      private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
    35              ".mvn/wrapper/maven-wrapper.properties";
    36  
    37      /**
    38       * Path where the maven-wrapper.jar will be saved to.
    39       */
    40      private static final String MAVEN_WRAPPER_JAR_PATH =
    41              ".mvn/wrapper/maven-wrapper.jar";
    42  
    43      /**
    44       * Name of the property which should be used to override the default download url for the wrapper.
    45       */
    46      private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
    47  
    48      public static void main(String args[]) {
    49          System.out.println("- Downloader started");
    50          File baseDirectory = new File(args[0]);
    51          System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
    52  
    53          // If the maven-wrapper.properties exists, read it and check if it contains a custom
    54          // wrapperUrl parameter.
    55          File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
    56          String url = DEFAULT_DOWNLOAD_URL;
    57          if(mavenWrapperPropertyFile.exists()) {
    58              FileInputStream mavenWrapperPropertyFileInputStream = null;
    59              try {
    60                  mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
    61                  Properties mavenWrapperProperties = new Properties();
    62                  mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
    63                  url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
    64              } catch (IOException e) {
    65                  System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
    66              } finally {
    67                  try {
    68                      if(mavenWrapperPropertyFileInputStream != null) {
    69                          mavenWrapperPropertyFileInputStream.close();
    70                      }
    71                  } catch (IOException e) {
    72                      // Ignore ...
    73                  }
    74              }
    75          }
    76          System.out.println("- Downloading from: " + url);
    77  
    78          File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
    79          if(!outputFile.getParentFile().exists()) {
    80              if(!outputFile.getParentFile().mkdirs()) {
    81                  System.out.println(
    82                          "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
    83              }
    84          }
    85          System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
    86          try {
    87              downloadFileFromURL(url, outputFile);
    88              System.out.println("Done");
    89              System.exit(0);
    90          } catch (Throwable e) {
    91              System.out.println("- Error downloading");
    92              e.printStackTrace();
    93              System.exit(1);
    94          }
    95      }
    96  
    97      private static void downloadFileFromURL(String urlString, File destination) throws Exception {
    98          if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
    99              String username = System.getenv("MVNW_USERNAME");
   100              char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
   101              Authenticator.setDefault(new Authenticator() {
   102                  @Override
   103                  protected PasswordAuthentication getPasswordAuthentication() {
   104                      return new PasswordAuthentication(username, password);
   105                  }
   106              });
   107          }
   108          URL website = new URL(urlString);
   109          ReadableByteChannel rbc;
   110          rbc = Channels.newChannel(website.openStream());
   111          FileOutputStream fos = new FileOutputStream(destination);
   112          fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
   113          fos.close();
   114          rbc.close();
   115      }
   116  
   117  }