运行 "python -m unittest" 使用 maven exec-maven-plugin 失败
Running "python -m unittest" failing with maven exec-maven-plugin
我正在尝试设置我的 Maven 构建,以便 mvn test
运行 除了我的 Java 测试之外还有我的 python 测试。我正在尝试使用 exec-maven-plugin
来执行此操作。
我的 pom.xml
有:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<configuration>
<executable>python3</executable>
<workingDirectory>${project.basedir}/src/main/resources/scripts/</workingDirectory>
<arguments>
<argument>-m</argument>
<argument>unittest</argument>
<argument>discover</argument>
<argument>-p</argument>
<argument>'*_test.py'</argument>
</arguments>
</configuration>
<id>python-test</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
我的项目结构如下:
.
├── pom.xml
├── src
│ ├── main
│ │ └── resources
│ │ ├── scripts
│ │ │ ├── __init__.py
│ │ │ ├── foo.py
│ │ │ ├── foo_test.py
当我尝试从项目根目录 运行 它时:
mvn exec:exec@python-test
我得到 0 个测试 运行:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
但是,如果我手动执行此操作,效果很好:
cd src/main/resources/scripts
python3 -m unittest discover -p '*_test.py'
...
----------------------------------------------------------------------
Ran 3 tests in 0.010s
我做错了什么?
提前致谢!
原来这一行的单引号是问题所在:<argument>'*_test.py'</argument>
。包裹文件匹配器的单引号被解释为 -p "'*_test.py'"
并且不匹配任何文件。删除它们解决了问题。
我正在尝试设置我的 Maven 构建,以便 mvn test
运行 除了我的 Java 测试之外还有我的 python 测试。我正在尝试使用 exec-maven-plugin
来执行此操作。
我的 pom.xml
有:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<configuration>
<executable>python3</executable>
<workingDirectory>${project.basedir}/src/main/resources/scripts/</workingDirectory>
<arguments>
<argument>-m</argument>
<argument>unittest</argument>
<argument>discover</argument>
<argument>-p</argument>
<argument>'*_test.py'</argument>
</arguments>
</configuration>
<id>python-test</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
我的项目结构如下:
.
├── pom.xml
├── src
│ ├── main
│ │ └── resources
│ │ ├── scripts
│ │ │ ├── __init__.py
│ │ │ ├── foo.py
│ │ │ ├── foo_test.py
当我尝试从项目根目录 运行 它时:
mvn exec:exec@python-test
我得到 0 个测试 运行:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
但是,如果我手动执行此操作,效果很好:
cd src/main/resources/scripts
python3 -m unittest discover -p '*_test.py'
...
----------------------------------------------------------------------
Ran 3 tests in 0.010s
我做错了什么?
提前致谢!
原来这一行的单引号是问题所在:<argument>'*_test.py'</argument>
。包裹文件匹配器的单引号被解释为 -p "'*_test.py'"
并且不匹配任何文件。删除它们解决了问题。