背景:
因为我们的开发环境是离线的,因此每次在外网开发了一个功能demo使用了maven引入了新的依赖,要将这个demo工程在内网继续开发,就得将一个个依赖包导进去,如果少的话直接将某些文件夹拷贝进内网开发环境的repository里面就行了,但是多的话就很麻烦。
解决办法:
- 将外网的项目用idea设置maven本地仓库到一个新的文件夹中
然后回到idea项目的pom.xml中,进行maven刷新,将当前项目所需要的jar包自动按照仓库结构下载到新的文件夹中。此时这个新文件夹就具备了当前项目运行的最小依赖。
2. 将这个文件夹导入内网,进行合并到现有的仓库中。这里就需要用到一段代码,要求就是将源文件夹中的文件或者文件夹复制到目标文件夹中(内网现有的repository)。
3. 代码如下:
public class CopyFileOrDir {
public static void main(String[] args) {
File sourceDir = new File("G:\工作\hadoop安装环境\资料\hadoop-client依赖jar包\repository"); // 源文件夹路径
File targetDir = new File("G:\工作\hadoop安装环境\资料\hadoop-client依赖jar包\repository_1"); // 目标文件夹路径
if (!targetDir.exists()) { // 如果目标文件夹不存在,则创建目标文件夹
targetDir.mkdir();
}
try {
copyDirectory(sourceDir, targetDir); // 拷贝目录
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copyDirectory(File sourceDir, File targetDir) throws IOException {
File[] files = sourceDir.listFiles();
if (files != null) {
for (File file : files) {
File targetFile = new File(targetDir.getAbsolutePath() + File.separator + file.getName());
if (file.isDirectory()) { // 如果是目录,递归拷贝目录
if (!targetFile.exists()) {
targetFile.mkdir();
}
copyDirectory(file, targetFile);
} else { // 如果是文件,拷贝文件
if (!targetFile.exists()) {
Files.copy(file.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
}
}
}
}
最后在内网中将导入的最小环境,给合并到当前现有的repository文件夹中即可。