如何在JFrog Artifactory上传时仅保留源文件夹结构(排除父目录)
问题描述
本地机器目录结构:
c:\git \repo \myproject \build \assets \html \js \css
使用以下命令上传制品到Artifactory:
jf rt u "c:\git\repo\myproject\build\*" my-jfrog-repo-generic-local/2023/ --sync-deletes="my-jfrog-repo-generic-local/2023/"
上传后Artifactory生成的目录结构不符合预期,带上了完整本地路径:
my-jfrog-repo-generic-local 2023 C: git repo myproject build \html \js \css
期望的目标目录结构:
my-jfrog-repo-generic-local 2023 build \html \js \css
解决方案
要实现只保留build目录及其子结构上传到目标位置,有两种可行方法:
方法1:通过--base-dir指定基础路径
使用--base-dir参数将c:\git\repo\myproject设为上传的基准目录,然后直接上传build目录。这样JFrog CLI会忽略基准路径之外的层级,仅将build及其子目录传到Artifactory的2023文件夹下:
jf rt u "build" my-jfrog-repo-generic-local/2023/ --base-dir="c:\git\repo\myproject" --sync-deletes="my-jfrog-repo-generic-local/2023/build/"
注意同步删除的路径要调整为my-jfrog-repo-generic-local/2023/build/,确保只清理该目录下的过时文件。
方法2:切换到父目录后执行上传
先通过命令行切换到c:\git\repo\myproject目录,再执行上传命令。此时CLI会以当前目录为基准,直接将build目录传到目标位置:
cd c:\git\repo\myproject jf rt u "build" my-jfrog-repo-generic-local/2023/ --sync-deletes="my-jfrog-repo-generic-local/2023/build/"
两种方法最终都会生成你期望的目录结构。
内容的提问来源于stack exchange,提问作者LP13
相关产品推荐
相关产品推荐

