Maven命令mvn可以从终端运行但不会从python出现错误

问题描述 投票:1回答:2

我正在尝试从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脚本)发生的警告都是相同的。

java python-3.x shell maven subprocess
2个回答
0
投票

尝试删除exec.mainClass周围的双引号,即:


0
投票

通常,当我从java / python / etc运行程序时遇到args问题。我将要使用的命令包装在sh -c中,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.