将gradle本地仓库的目录结构更改为maven本地仓库的目录结构
- 在项目开发过程中,我们需要将本地gradle仓库中的jar包上传到另外一个nexus上面,但是上传过程中发现我们的目录结构与nexus上面的目录结构不相符,不能进行批量上传。
- 从上面两张图片可以看出gradle在最外面的一层目录是 com.google.code.findbugs 这种形式,需要将其目录结构转换为 com/google/code/findbugs 这种目录结构。因此写了一下脚本来完成这件事情。将下面的脚本放在gradle的仓库下面与 com.google.code.findbugs 同级目录。
#!/bin/bash
MyDir=javen/
rm -rf javen* 2>&1 >/dev/null
mkdir -p $MyDir;
ls -R * | grep -v '.*/$'| grep -v javen |egrep -B1 '.jar|.pom'|grep -v "\-\-"|tee javenJar.txt;
echo;sleep 1
echo '################## START ####################'
echo;sleep 2
while read line
do
endFlag=`echo $line|grep '.*:$'`
if [ -n "$endFlag" ]; then
sourceDir=`echo $endFlag | awk -F ':' '{print $1}'`
destDirTmp=`dirname $line`":"
dprefix=`echo $destDirTmp| awk -F '/' '{print $1}'|sed 's#\.#/#g'`
dendfix=`echo $destDirTmp| awk -F '/' '{print $2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/"$9}'`
destDir=$MyDir$dprefix/`echo $dendfix | awk -F ':' '{print $1}'`
else
if [ ! -d "$destDir" ]; then
echo "directory is not exists; mkdir $destDir"
mkdir -p $destDir
echo "cp -rp $sourceDir/$line $destDir/$line"
cp -rp $sourceDir/$line $destDir/$line;
else
echo "cp -rp $sourceDir/$line $destDir/$line"
cp -rp $sourceDir/$line $destDir/$line;
fi;
fi;
done < javenJar.txt;
echo
echo "############# FINISH #############"
rm -rf javenJar.txt
- 输出的结果目录会产生在 javen 这个目录下面,可以看到已经整理好的jar包,与maven本地仓库的目录结构一致。