我在intellij下有一个相对奇怪的maven项目,其中大部分子模块都是java,但有一个模块包含shell和python脚本(maven用maven-assembly-plugin打包)。我设法将maven配置为在执行mvn test
时执行python unitest,并且在git-bash上执行时它可以工作。但在intellij中,当在maven工具窗口中单击lifecycle>test时,它不起作用。
问题似乎是它在powershell中执行它。我们在windows下开发,但是项目部署在linux上,所以shell和python脚本预计可以在linux上工作。我在intellij的终端工具(for example here)中发现了使用git-bash的配置,但没有使用它(或另一个类似linux的shell)来执行maven test。
=>是否有这样的配置?
注意:我使用的是intellij社区版2021.3.2。我可能会得到一个新的行政长官或最终版本,如果这解决了我的问题(但我宁愿避免改变/更新,如果不必要的)
1条答案
按热度按时间4c8rllxm1#
这不是对我的问题的确切回答,而是为了分享我通过maven执行python test的特定问题的解决方案:
首先,我在测试步骤中使用
exec-maven-plugin
for maven执行python unitest。然而,它可以在git-bash(可能是任何linux shell)中使用python调用,但正如我上面的问题所解释的那样,当通过intellij执行时,它会失败,因为它使用了windows shell。因此,可以做的是使用sh.bat文件来调用带有unix shell的python unitest命令,并将“sh”放在maven exec插件配置的“可执行”部分:在unix中,它调用'sh'命令,在windows系统中,它调用sh.bat文件
在pom中
然后创建一个sh.bat文件,内容如下(这里我在windows上的git安装中调用sh.exe)
注意事项:
python -m unittest discover src/test/
参数适应您正在使用的测试结构。这里我把测试放在src/test
中,因此我需要一个__init__.py
文件,它将src/main/python
添加到系统路径中,其中prod代码位于系统路径中。参见https://stackoverflow.com/a/59732673/1206998