一、Maven 报错
二、命令
mvn compile exec:java -Dexec.mainClass=${main}
我的工程目录文件是这样的,所以,我写的命令是
mvn compile exec:java -Dexec.mainClass=http.hhd.Hello
再来看一下报错信息
相当于识别到的生命周期阶段是 compile 和 exec:java, 而-Dexec.mainClass=http.hhd.Hello未识别到。
三、解决方案
加引号,让系统能正确识别到命令里的生命周期和配置参数
mvn compile exec:java -D"exec.mainClass"="http.hhd.Hello"
这个命令执行的含义是使用 Maven 的 compile 阶段编译项目,然后使用 exec.java 执行指定的 ${main} 主类
四、补充知识点
- -D 是一个指定系统属性的标志。-D+属性名+等号+对应的值,相当于定义了一个系统属性, Maven 或 Maven 插件可以在构建过程中使用这个属性。例如:我的命令中定义的,指定了exec.mainClass 属性的值为 http.hhd.Hello。
-Dexec.mainClass=http.hhd.Hello
- 但是有时候,由于命令行中可能因为操作系统解析的差异或其他原因导致命令行没有被正确解析,需要用 “” 将属性名和属性值包起来,确保能被正确识别。
五、提示
这段命令,没有被正确运行的原因,还可能是因为空格多打或少打了。