【发布时间】:2020-07-02 11:13:15
【问题描述】:
我正在尝试从 python 脚本运行一个 maven 项目。我已经安装了apache maven。
从 pom.xml 所在项目文件夹中的终端运行命令:mvn exec:java -D"exec.mainClass"="org.matsim.project.RunMatsim",不会产生任何错误并且项目运行正常。
但是当从我的 python 脚本运行以下代码时
import subprocess as sp
def execute(cmd):
popen = sp.Popen(cmd, stdout=sp.PIPE, universal_newlines=True,shell=True)
for stdout_line in iter(popen.stdout.readline, ""):
yield stdout_line
popen.stdout.close()
return_code = popen.wait()
if return_code:
raise sp.CalledProcessError(return_code, cmd)
for path in execute(["mvn", "exec:java" ,'-D"exec.mainClass"="org.matsim.project.MatsimRun"']):
print(path, end="")
我收到以下错误:
[错误] 没有为此构建指定目标。您必须以 : 或 :[:]: 格式指定有效的生命周期阶段或目标。可用的生命周期阶段有:验证、初始化、生成源、流程源、生成资源、流程资源、编译、流程类、生成测试源、流程测试源、生成测试资源、流程-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify`
为什么会这样?有什么问题?
两种情况(终端、python 脚本)出现的警告相同。
【问题讨论】:
-
使用 R
system('mvn exec:java -D"exec.mainClass"="org.matsim.project.RunMatsim"')运行相同的命令可以正常工作,如果这有帮助的话。
标签: java python-3.x shell maven subprocess