MAVEN 相关问题

MAVEN 安装

检查 JDK 是否安装

1、

C:\Users\panjunbiao>echo %Java_Home%
C:\Users\panjunbiao>java -version


2、安装连接 https://help.aliyun.com/document_detail/40814.html

下载 maven


配置 maven (本地仓库和镜像)

1、

2、本地仓库地址

3、配置国内镜像

  • 注意:可以同时配置公司私服地址 (最好找同事要一下 maven 的配置文件记得改一下本地仓库地址)

IDEA 中拉取 jar 失败问题

1、检查是否正确设置 maven

2、点击 maven 插件从磁盘重新加载配置

3、reload project
4、由于网络原因导致下了一半的 jar 包中断,导致 jar 不可用

  • 解决方案:

1、删除本地仓库中拉取一般的资源
2、运行相关配置

package com.dadastory;

import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* @Author:chenda
* @Date:2021/7/20 15:07
*/
public class Maven_Tools {
  private static final Properties properties = new Properties();

  static {
      try {
          File file = new File("config.properties");
          if (file.exists()) {
              properties.load(new FileInputStream(file));
              System.out.println("您的配置文件如下:");
              String JavaWorkspacePath = properties.getProperty("JavaWorkspacePath");
              String MavenRepositoryPath = properties.getProperty("MavenRepositoryPath");
              if (JavaWorkspacePath != null && MavenRepositoryPath != null) {
                  System.out.println("Java项目工作路径为:" + JavaWorkspacePath);
                  System.out.println("Maven仓库路径地址为:" + MavenRepositoryPath);
              } else {
                  changeProperties();
              }
              System.out.println("");
          } else {
              System.out.println("配置文件不存在!");
              System.exit(1);
          }
      } catch (IOException e) {
          e.printStackTrace();
      }
  }

  private static final Scanner sc = new Scanner(System.in);

  public static void main(String[] args) {
      while (true) {
          System.out.println("欢迎使用Idea清理小工具");
          System.out.println("###################################");
          System.out.println("-----------------------------------");
          System.out.println("1.清除Maven仓库未成功下载的POM依赖文件  |");
          System.out.println("2.清除Idea项目文件下所有的编译缓存      |");
          System.out.println("3.修改配置文件路径                    |");
          System.out.println("4.退出                              |");
          System.out.println("-----------------------------------");
          System.out.println("请选择你需要的功能项:");
          String fuc = sc.nextLine();
          if (!isDigit2(fuc)) System.out.println("您输入的格式有误,请重新输入!");
          int num = Integer.parseInt(fuc);
          switch (num) {
              case 1:
                  cleanMavenPom();
                  break;
              case 2:
                  cleanMyProject();
                  break;
              case 3:
                  try {
                      changeProperties();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
                  break;
              case 4:
                  System.exit(0);
          }
      }
  }

  //修改配置路径
  private static void changeProperties() throws IOException {
      System.out.println("请输入新的项目工作空间的绝对路径路径:(例如:D:\\Java_workspace)");
      String JavaWorkspacePath = sc.nextLine();
      System.out.println("请输入新的Maven仓库文件夹的绝对路径路径:(例如:D:\\Maven\\Repository)");
      String MavenRepositoryPath = sc.nextLine();
      File file1 = new File(JavaWorkspacePath);
      File file2 = new File(MavenRepositoryPath);
      if (!file1.exists()) System.out.println("您输入的" + JavaWorkspacePath + "不存在!");
      if (!file2.exists()) System.out.println("您输入的" + MavenRepositoryPath + "不存在!");
      if (file1.exists() && file2.exists()) {
          properties.setProperty("JavaWorkspacePath", JavaWorkspacePath);
          properties.setProperty("MavenRepositoryPath", MavenRepositoryPath);
          File file = new File("config.properties");
          FileWriter fileWriter = new FileWriter(file.getAbsolutePath());
          properties.store(fileWriter, "");
          System.out.println("配置更新成功!");
          fileWriter.close();
      }
  }


  //清除项目下面的所有target编译文件
  private static void cleanMyProject() {
      String path = properties.getProperty("JavaWorkspacePath");
      File destDir = new File(path);
      if (!destDir.exists()) {
          System.out.println("有效路径不存在,请重新配置!");
          return;
      }
      List<File> list = new ArrayList<>();
      findAllTarget(destDir, list);
      System.out.println("从您的项目中找到了以下的target文件夹:");
      list.forEach(System.out::println);
      System.out.println("您确认是否删除上述文件?(y/n)");
      String confirm = sc.nextLine();
      if (confirm.equalsIgnoreCase("y")) {
          for (File file : list) {
              deleteFile(file);
              System.out.println(file.toString() + "清理成功!");
          }
      }

  }


  //清除所有pom文件
  private static void cleanMavenPom() {
      String path = properties.getProperty("MavenRepositoryPath");
      File destDir = new File(path);
      if (!destDir.exists()) {
          System.out.println("有效路径不存在,请重新配置路径!");
          return;
      }
      List<File> list = new ArrayList<>();
      findAllPom(destDir, list);
      System.out.println("从仓库中找到了以下文件:");
      list.forEach(System.out::println);
      System.out.println("您确认是否删除文件?(y/n)");
      String confirm = sc.nextLine();
      if ("y".equalsIgnoreCase(confirm)) {
          for (File file : list) {
              File parentFile = file.getParentFile();
              file.delete();
              parentFile.delete();
              System.out.println(file.toString() + "清理成功!");
          }
      }
  }


  //查询所有pom文件,并添加到集合
  private static void findAllPom(File destDir, List<File> list) {
      File[] files = destDir.listFiles();
      if (files != null) {
          for (File file : files) {
              if (file.isDirectory()) findAllPom(file, list);
              if (file.isFile()) {
                  if (file.toString().contains("lastUpdated")) {
                      list.add(file);
                  }
              }
          }
      }
  }

  //查询所有target文件夹,并添加到集合
  private static void findAllTarget(File destDir, List<File> list) {
      if (destDir.isFile()) return;
      if (destDir.isDirectory() && destDir.toString().endsWith("target")) list.add(destDir);
      File[] files = destDir.listFiles();
      if (files != null) {
          for (File file : files) {
              if (file.isDirectory()) findAllTarget(file, list);
          }
      }
  }


  // 判断一个字符串是否都为数字
  private static boolean isDigit2(String strNum) {
      Pattern pattern = Pattern.compile("[0-9]{1,}");
      Matcher matcher = pattern.matcher((CharSequence) strNum);
      return matcher.matches();
  }

  //递归删除文件夹
  private static void deleteFile(File desDir) {
      File[] files = desDir.listFiles();
      if (files != null) {
          for (File file : files) {
              if (file.isDirectory()) deleteFile(file);
              if (file.isFile()) file.delete();
          }
      }
      desDir.delete();
  }

}

2、config.properties

#
#Wed Jul 21 15:18:43 CST 2021
MavenRepositoryPath=D://Program Files//maven-local-repository
JavaWorkspacePath=D://Program Files

3、运行程序清理没有下载完的配置

私服

1、如果根据上面的配置还是不行

1、检查是否引用了公司封装的资源,如果有检查一下和公司私服是否能 Ping 通
2、(可选)下载私服地址的 jar 包到本地执行 maven install 文件地址

posted @ 2023-06-18 23:37  ayiZzzz  阅读(33)  评论(0)    收藏  举报