CI_CD/gradle

[Gradle] Gradle 캐시 -> maven repo 변경하기

홍또~ 2022. 5. 28. 02:11

Gradle은 Maven과 달리 캐시로 dependency를 관리한다.

이것이 장단점이 있지만, nexus에 통째로 올릴 때에는 Maven구조로 올려야 하기 때문에

Gradle 캐시를 Maven구조로 바꾸어주는 스크립트를 자바로 짜보았다.

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;

public class mainapp{

            public static void main(String[] args) throws IOException{

String folderPath="D:\\Gradle\\caches\\modules-2\\files-2.1";
List<String> fileList = new ArrayList<String>();
scanDir(folderPath,fileList);
for(String fullPath : fileList){
String[] splitPath = fullPath.split("\\\\");
String newFullPath="";
String newDirectoryPath ="";
for (int i=0; i< splitPath.length; i++){
if(i==1){
newFullPath+=splitPath[1]+"2";
}else if(i==splitPath.length-2){
newDirectoryPath=newFullPath;
continue;
} else if(i!=5){
newFullPath+=splitPath[i];
}

if(i!=splitPath.length-1 && i!=5){
 newFullPath +="\\";
}
if(i==5){
String[] doStr = splitPath[i].split("[.]");
for (int j=0; j<doStr.length; j++){
if(j==0)
    newFullPath +=doStr[j];
else
   newFullPath +="\\"+doStr[j];
}
newFullPath+="\\";
}
}
System.out.println(newFullPath);
File oldFile = new File(fullPath);
File newFile = new File(newFullPath);
File newDir = new File(newDirectoryPath);
if(!newDir.exists())
    Files.createDdirectories(directoryPath);
Files.copy(oldFile.toPath(),newFile.toPath(),StandardCopyOption.REPLACE_EXISTING);
}
System.out.println("완료!!!");
}

public static void scanDir(String folderPath,List<String> fileList) {
File[] files = new File(folderPath).listFiles();
for (File f: files) {
if(f.isDirectory()) {
   scanDir(f.getAbsolutePath(), fileList)
} else {
    fileList.add(f.getAbsolutePath());
}
}
}
}

- folderPath 에 Gradle 캐시 경로를 넣으면 C나 D 바로 아래폴더명2로 Maven repo구조로 생긴다.