解决"The goal you specified requires a project to execute but there is no POM in this directory"问题
情景再现
今天是2021年5月7日。用的是最新的Maven 3.8.1。
跟随官方教程输入如下命令:
1 | mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false |
却得到了这样的结果:
生成失败,提示缺少POM文件。
看这报错信息就奇怪了,官方的例子就是这么写的啊:根据原型生成项目、非交互模式、给出了所有需要的参数,看起来没什么问题。
虽然找个pom.xml
不难,但Maven你一个构建工具,肯定应该能自己生成的啊。
解决方案
1、使用交互式方案构建
可行,但很不舒服,为啥非交互式不行?
2、偶然发现在mac上能够构建成功。
难道是Windows和Maven命令行有冲突?搜索相关资料,无果。
思考:既然官方示例这么写,应该有不少人实际用过,为什么没人有这个问题?系统既然没问题,那我的目光就转到了终端上,莫非。。。
3、使用CMD执行
CMD执行没什么问题。这就解释了为什么资料少:因为大多数人还是用CMD而不是PowerShell。问题定位到PowerShell上。
4、PowerShell问题
查找相关资料,发现正确解法:
1 | mvn archetype:generate ` |
成功。
在PowerShell里使用-D
参数要用单引号'
括起来,具体原因不知,应该是和PowerShell语法有关。
解决方案
1、使用-D
参数要用单引号'
括起来
2、使用CMD。不想开新窗口的话,就直接在PowerShell里执行CMD再退出。