Ошибка импорта нескольких модулей Python в сборке Maven
Я выполняю тестовые примеры роботов из сборки maven. Теперь этим тестовым сценариям нужно много внешних модулей Python. Когда я выполняю их напрямую (pybot
) все отлично работает.
Но когда я выполняю их через maven, это не работает для внешних модулей python.
[ ERROR ] Error in file '/home/xyz/robot/tf2jan/Tests/CLI/mycli/mycli_resources.txt': Importing test library '/home/xyz/robot/tf2jan/lib/rest/JsonValidator.py' failed: ImportError: No module named jsonselect
Traceback (most recent call last):
File "/home/xyz/robot/tf2jan/lib/rest/JsonValidator.py", line 6, in <module>
from jsonselect import jsonselect
PYTHONPATH:
/usr/lib/python2.7/dist-packages
/home/xyz/Downloads/python-jsonpath-rw
/home/xyz/Downloads/ply-3.10
/home/xyz/.m2/repository/org/robotframework/robotframework/3.0.2/Lib
/home/xyz/.m2/repository/org/robotframework/robotframework/3.0.2/robotframework-3.0.2.jar/Lib
У меня есть возможность добавить их в конфигурацию плагина maven, используя extraPathDirectories
как это:
<plugin>
<groupId>org.robotframework</groupId>
<artifactId>robotframework-maven-plugin</artifactId>
<version>1.4.7</version>
<executions>
<execution>
<goals>
<goal>acceptance-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skip>${skipRobotTests}</skip>
<testCasesDirectory>/home/xyz/robot/tf2jan/Tests/CLI/mycli</testCasesDirectory>
<variableFiles>/home/xyz/robot/tf2jan/etc/environments/mycli_env.py</variableFiles>
<outputDirectory>${project.basedir}/target/robotframework-reports/</outputDirectory>
<tests>mycli_help_usage</tests>
<extraPathDirectories>
<extraPathDirectory>/usr/lib/python2.7/dist-packages</extraPathDirectory>
<extraPathDirectory>/home/xyz/Downloads/python-jsonpath-rw</extraPathDirectory>
<extraPathDirectory>/home/xyz/Downloads/ply-3.10</extraPathDirectory>
</extraPathDirectories>
<externalRunner>
<excludeDependencies>false</excludeDependencies>
<jvmArgs>
<jvmArg>${surefireArgLine}</jvmArg>
</jvmArgs>
</externalRunner>
</configuration>
</execution>
</executions>
</plugin>
Но с этим решением я в конечном итоге добавлю слишком много модулей в путь, что усложнит файл pom. Есть ли какая-либо конфигурация для автоматического разрешения этих зависимостей модулей или какое-либо другое более короткое решение?
1 ответ
Я хотел бы предложить, поскольку у вас нет управления зависимостями для библиотек Python в Maven, это:
- Поместите свои библиотеки в каталог по умолчанию для Python
Добавьте к своей PYTHONPATH (так как она проверена Maven, смотрите вывод
PYTHONPATH:
) расположение ваших библиотекРедактировать Если вы хотите избежать необходимости вручную устанавливать зависимость для ваших CI-боксов, вы можете попробовать этот плагин maven:
<plugin> <groupId>com.googlecode.maven-download- plugin</groupId> <artifactId>download-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <id>install-a-dependency</id> <phase>pre-integration-test</phase> <goals> <goal>wget</goal> </goals> <configuration> <url>the_dependency_url</url> <unpack>true</unpack> <outputDirectory>${project.build.directory}/jbpm-3.1.4</outputDirectory> <md5>df65b5642f33676313ebe4d5b69a3fff</md5> </configuration> </execution> </executions> </plugin>
Смотрите https://github.com/maven-download-plugin/maven-download-plugin