Maven 命令行:参数、选项和参数

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

我试图更好地理解命令行是如何工作的

当涉及到参数、选项和子命令时,我有点困惑

让我们想象一下maven(java构建工具):

mvn是命令行程序。但是什么是“干净”和“安装”?它们是参数还是子命令

让我们想象另一个例子:

prog -a arg
prog是命令行程序-a是一个选项,arg是一个参数。如何知道arg是属于“prog”的参数还是属于选项“-a”的参数

谢谢

它们是参数还是子命令

视情况而定。如果程序的参数中有层次结构,则它们将是子命令,如下所示:

docker image ls
mvn clean install
(docker程序有一个命令/命令组
image
和一个子命令
ls

如果程序采用参数来表示串行执行,则它们只是参数,如下所示:

docker image ls
mvn clean install
(mvn
mvn
程序将首先执行
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
选项的定义。如果它不接受参数,它有时被称为标志。如果它确实接受一个参数,这是选项规范的一部分,程序的命令行解析器可以解释这一点

就我个人而言,我从使用构建命令行工具中学到了很多。(而且绝非专家。)