Intellij Idea 如何在windows上的intellij中执行maven测试(unix/git)bash?

zu0ti5jz  于 2023-06-28  发布在  Windows
关注(0)|答案(1)|浏览(126)

我在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。我可能会得到一个新的行政长官或最终版本,如果这解决了我的问题(但我宁愿避免改变/更新,如果不必要的)

4c8rllxm

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中

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
      <execution>
        <id>run-python-test</id>
        <phase>test</phase>
        <goals>
          <goal>exec</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <executable>sh</executable>
      <arguments>
        <argument>-c</argument>
        <argument>python -m unittest discover src/test/</argument>
      </arguments>
    </configuration>
  </plugin>

然后创建一个sh.bat文件,内容如下(这里我在windows上的git安装中调用sh.exe)

"C:\Program Files\Git\bin\sh.exe" %*

注意事项:

  • 我从https://stackoverflow.com/a/46410022/1206998找到了这个想法
  • 如果sh.exe在(windows)路径中,则sh.bat文件可能是可以避免的
  • 使python -m unittest discover src/test/参数适应您正在使用的测试结构。这里我把测试放在src/test中,因此我需要一个__init__.py文件,它将src/main/python添加到系统路径中,其中prod代码位于系统路径中。参见https://stackoverflow.com/a/59732673/1206998

相关问题