【发布时间】:2021-07-24 12:17:54
【问题描述】:
我正在 Windows 平台上编写一个脚本,我需要在其中打包 Maven 项目。现在的问题是我需要正确使用此命令,而pom.xml 位于上两层的文件夹中,即cd ..、cd ..。
此命令行无法按预期工作需要进行哪些修改?
mvn -f \.\.\ package -DskipTests
当前目录是:
C:\Users\mike\Documents\mavenapp\fold1\fold2
我需要在两个文件夹中执行mvn,即在目录mavenapp中。
我不想这样做,因为这将是一个硬编码的解决方案:
mvn -f C:\Users\mike\Documents\mavenapp package -DskipTests
【问题讨论】:
-
我建议首先阅读有关Naming Files, Paths, and Namespaces 的Microsoft 文档,每个在Windows 上为Windows 程序或脚本编写代码的程序员都应该至少阅读一次。文件夹路径规范
\.\.\引用 当前驱动器 的 root 目录(第一个反斜杠),在该目录下再次使用.\并再次在该目录下使用一个更多.\这不是你想要的。 -
打开command prompt,运行
call /?并阅读解释如何引用批处理文件参数的输出帮助。参数 0 始终是批处理文件本身。因此,如果批处理文件存储在%UserProfile%\Documents\mavenapp\fold1\fold2中,并且您想在命令行中使用上两级文件夹的路径,则最好使用mvn -f "%~dp0..\..\" package -DskipTest来引用此文件夹。我建议不仅写mvn,而且至少写mvn文件扩展名。 (.exe或.com或.cmd或.bat,我不知道。) -
请注意,
%~dp0引用的批处理文件路径始终以 Windows 目录分隔符\结尾,因此%~dp0与文件或文件夹名称或通配符模式的连接对于具有批处理文件路径的 100% 有效参数字符串,应始终不使用额外的反斜杠。
标签: java maven batch-file