zoukankan      html  css  js  c++  java
  • MVNW Springboot

    在创建Springboot 2 引用时,根目录下会有

     maven-wrapper.properties

    distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
    wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

    MavenWrapperDownloader.java

    /*
     * Copyright 2007-present the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless 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 ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    import java.net.*;
    import java.io.*;
    import java.nio.channels.*;
    import java.util.Properties;
    
    public class MavenWrapperDownloader {
    
        private static final String WRAPPER_VERSION = "0.5.6";
        /**
         * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
         */
        private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
    
        /**
         * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
         * use instead of the default one.
         */
        private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
                ".mvn/wrapper/maven-wrapper.properties";
    
        /**
         * Path where the maven-wrapper.jar will be saved to.
         */
        private static final String MAVEN_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.
         */
        private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
    
        public static void main(String args[]) {
            System.out.println("- Downloader started");
            File baseDirectory = new File(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.
            File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
            String url = DEFAULT_DOWNLOAD_URL;
            if(mavenWrapperPropertyFile.exists()) {
                FileInputStream mavenWrapperPropertyFileInputStream = null;
                try {
                    mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                    Properties mavenWrapperProperties = new Properties();
                    mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                    url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
                } catch (IOException e) {
                    System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
                } finally {
                    try {
                        if(mavenWrapperPropertyFileInputStream != null) {
                            mavenWrapperPropertyFileInputStream.close();
                        }
                    } catch (IOException e) {
                        // Ignore ...
                    }
                }
            }
            System.out.println("- Downloading from: " + url);
    
            File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
            if(!outputFile.getParentFile().exists()) {
                if(!outputFile.getParentFile().mkdirs()) {
                    System.out.println(
                            "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
                }
            }
            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);
            }
        }
    
        private static void downloadFileFromURL(String urlString, File destination) throws Exception {
            if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
                String username = System.getenv("MVNW_USERNAME");
                char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
                Authenticator.setDefault(new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });
            }
            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();
        }
    
    }

    可以使用mvnw spring-boot:run 确保在不同的机器上使用相同的maven 版本,此处是 apache-maven-3.6.3

    如果本地没有安装 apache-maven-3.6.3,会在 C:UsersXLuffy.m2wrapperdists 目录下 下载对应的maven 版本:

     对于Springboot 1.X 没有自动生成mvnw 文件的,可以使用 如下命令生成mvnw 文件

    mvn -N io.takari:maven:wrapper

    运行后的结果如下:

     要使用不同版本的maven,可以按如下方式指定版本(不过,最好不指定maven 版本,因为maven wrapper 会有一个默认使用的maven版本,确保在不同的地方使用的是相同的maven 版本):

    mvn -N io.takari:maven:wrapper -Dmaven=3.3.9



  • 相关阅读:
    Python 参数设置
    python日志模块logging
    推荐一种快速提高英语口语的方法
    Windows 远程桌面文件传输的方法
    敏捷术语
    Timeout watchdog using a standby thread
    ZFS -世界上最高级的文件系统之一
    Linux下创建和删除用户
    linux 学习之路
    Difference between a Hard Link and Soft (Symbolic) Link
  • 原文地址:https://www.cnblogs.com/luffystory/p/13792149.html
Copyright © 2011-2022 走看看