Ошибка импорта нескольких модулей 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

Другие вопросы по тегам