Maven 命令行:参数、选项和参数
我试图更好地理解命令行是如何工作的 当涉及到参数、选项和子命令时,我有点困惑 让我们想象一下maven(java构建工具): mvn是命令行程序。但是什么是“干净”和“安装”?它们是参数还是子命令 让我们想象另一个例子:Maven 命令行:参数、选项和参数,maven,command-line,command-line-interface,Maven,Command Line,Command Line Interface,我试图更好地理解命令行是如何工作的 当涉及到参数、选项和子命令时,我有点困惑 让我们想象一下maven(java构建工具): mvn是命令行程序。但是什么是“干净”和“安装”?它们是参数还是子命令 让我们想象另一个例子: prog -a arg prog是命令行程序-a是一个选项,arg是一个参数。如何知道arg是属于“prog”的参数还是属于选项“-a”的参数 谢谢 它们是参数还是子命令 视情况而定。如果程序的参数中有层次结构,则它们将是子命令,如下所示: docker image ls
prog -a arg
prog是命令行程序-a是一个选项,arg是一个参数。如何知道arg是属于“prog”的参数还是属于选项“-a”的参数
谢谢
它们是参数还是子命令
视情况而定。如果程序的参数中有层次结构,则它们将是子命令,如下所示:
docker image ls
mvn clean install
(docker程序有一个命令/命令组image
和一个子命令ls
)
如果程序采用参数来表示串行执行,则它们只是参数,如下所示:
docker image ls
mvn clean install
(mvnmvn
程序将首先执行clean
生命周期,然后执行到默认生命周期中的安装
阶段,请参阅。)
我发现参数通常有一个有意义的顺序,比如Maven,而选项通常可以放在任何地方。对于Maven来说,有一些参数像-D..
,-e
,-U
(提到一些常见的参数)。他们可以去任何地方:
mvn -e clean -DskipTests install -Dcheckstyle.skip=true ... et cetera
对于其他程序,选项的顺序可能很重要,例如。它们看起来像选项(在这个意义上,它们有-option
-notation),尽管有人可能会说它们是参数。换句话说,这要视情况而定
prog-a arg
如何知道arg是属于“prog”的参数还是属于选项“-a”的参数
同样,这取决于a
选项的定义。如果它不接受参数,它有时被称为标志。如果它确实接受一个参数,这是选项规范的一部分,程序的命令行解析器可以解释这一点
就我个人而言,我从使用构建命令行工具中学到了很多。(而且绝非专家。)