Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python脚本运行Maven的方法?_Python_Maven_Batch File - Fatal编程技术网

从Python脚本运行Maven的方法?

从Python脚本运行Maven的方法?,python,maven,batch-file,Python,Maven,Batch File,(我正在使用Windows。) 我正在尝试从python脚本运行maven。我有这个: 导入子流程 mvn=“C:\\\\u home\\apache-maven-2.2.1\\bin\\mvn.bat--version” p=subprocess.Popen(mvn,shell=True,stdout=subprocess.PIPE) stdout,stderr=p.communicate() 打印p.returncode#如果成功,则为0 它工作正常,但我想知道以下几点: 添加参数而不是

(我正在使用Windows。)

我正在尝试从python脚本运行maven。我有这个:

导入子流程
mvn=“C:\\\\u home\\apache-maven-2.2.1\\bin\\mvn.bat--version”
p=subprocess.Popen(mvn,shell=True,stdout=subprocess.PIPE)
stdout,stderr=p.communicate()
打印p.returncode#如果成功,则为0
它工作正常,但我想知道以下几点:

  • 添加参数而不是追加字符串的更好方法
  • 也许有一些特定的方式来运行maven,而不需要上述内容
  • 显示输出的一种方式(目前仅根据失败/成功打印1或0)

我试图长期完成的(我注意到,如果有人有更好的方法),就是制作一个简单的脚本来构建一个项目列表,并将另一个文件列表(JAR/其他修改的东西)移动到一个文件夹以部署到VMs,手动操作是一件非常痛苦的事情。我可以在批处理脚本中工作,这一点不费吹灰之力,我只是想学习Python,想知道它是否更容易管理,因为我可以创建几个列表并迭代每个位置,而不是在批处理脚本中为每个任务设置一行

(我的批处理脚本的简短版本。)

有一个问题

提到:

这是在Java虚拟机上运行的Python

有关如何使用Maven Invoker的示例,请参见(在本例中,从Java内部)

以防有人有更好的方法

关于:

将另一个文件列表(JAR/其他修改内容)移动到文件夹中

您是否考虑过使用Maven本身(在这种特殊情况下,
copy resources
its的目标)

关于:

我只是想学Python

既然您正在使用Java:您是否考虑过将其作为您选择的脚本语言

它的一些优点:

  • Java语言是Groovy语言的一个子集。也就是说,每个Java代码也是Groovy代码。在学习Groovy时,您不必从一开始就使用成熟的Groovy语法
  • 可以编写脚本
  • 它作为脚本和类似的工具受到支持

像这样尝试
调用mvn-f C:\workspace\pom.xml-pl“proj1,proj2”clean install
我的批处理脚本按原样工作,我正在尝试用Python制作类似的东西。我认为告诉maven以批处理模式运行很重要(因此它使用默认值,不提示输入):mvn--批处理模式-v@wemu最好是
-V
,而不是
-V
。参见Maven:完整参考,6.1.4。显示版本信息:“_true.只是想强调批处理模式-并且弄乱了-v(这与-v不同)-非常正确:)感谢您的建议,我将传递复制资源,因为如果我没有太多的pom文件,我不想愚弄pom文件,而对于Groovy vs Python,它只会提出同样的问题:”我如何通过Groovy调用maven“@CaptainMan”如何通过Groovy调用maven”-通过我在这里的另一个答案中提到的maven调用器API。我试图澄清,这个ApacheMaven调用器API是java,所以你建议我使用Jython通过JVM利用它,同时在技术上仍然使用/学习Python,对吗?
@set version=7.8.3
@set staging_folder=C:\Users\me\Desktop\staging

@set stage_was=%staging_folder%\was
@set stage_ear=%stage_was%\stuffui.ear
@set stage_war=%stage_ear%\stuff-%version%.war

:: delete stage contents
call del /s /q %staging_folder%
call rmdir /s /q %stage_was%

:: make folders
call mkdir %stage_ear%
call mkdir %stage_war%\WEB-INF\lib

:: maven builds
call mvn -f C:\workspace\pom.xml -pl proj1,proj2 clean install

:: copy to stage
call xcopy C:\workspace\proj1\target\thing1.jar %stage_ear%\ /i /y

call xcopy C:\workspace\proj2\target\thing2.jar %stage_ear%\ /i /y
call xcopy C:\workspace\proj2\target\thing2.jar %stage_war%\WEB-INF\lib\ /i /y