Проблема пути к классам с process-exe c -maven-plugin (bazaarvoice) в Linux - PullRequest
0 голосов
/ 20 февраля 2020

Я использую process-exe c -maven-plugin (bazaarvoice), чтобы выполнить несколько процессов для моих интеграционных тестов. У меня есть некоторые требования моей компании о том, как использовать артефакты. Основной процесс (мой модуль maven) упакован в один jar (пример: my-app-1.0-SNAPSHOT.jar), а остальные зависимости (jars) должны находиться в папке / lib внутри цели. В связи с этим необходимо добавить файл jar и папку / lib в classpath.

<plugin>
    <groupId>com.bazaarvoice.maven.plugins</groupId>
    <artifactId>process-exec-maven-plugin</artifactId>
    <version>0.7</version>
    <executions>
      <!-- before I have other executions -->
      <execution>
        <id>demo-process</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>start</goal>
        </goals>
        <configuration>
          <name>demo-process</name>
          <processLogFile>${project.build.directory}/logs/my-log.log</processLogFile>
          <arguments>
            <argument>java</argument>
            <argument>-cp</argument>
            <argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*</argument>
            <argument>com.example.Main</argument>
          </arguments>
        </configuration>
      </execution>
    </executions>
  </plugin>

Это отлично работает.

Теперь одна из моих зависимостей в папке / lib пытается получить доступ к ресурсу (файлу свойств) моего текущего проекта. Следовательно, мне нужно добавить в classpath папку, в которой находятся мои ресурсы.

<argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/</argument>

Это изменение также отлично работает в моей локальной среде с Windows.

Но когда я запускаю конвейер моего приложения в Jenkins (Linux среда), оно выходит из строя, так как основной класс не найден. Баночка моего приложения (my-app-1.0-SNAPSHOT.jar) теперь не добавляется в путь к классам. Так что он работает нормально в локальном режиме, но всегда терпит неудачу в Jenkins.

Я пробовал разные способы настройки пути к классам в pom с помощью плагина, но всегда терпел неудачу.

У меня есть попробовал с кавычками

<argument>"${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${project.build.testOutputDirectory}/"</argument>

Также используя $ {project.build.directory}

<argument>${project.artifactId}-${project.version}.jar${path.separator}lib/*${path.separator}${${project.build.directory}/test-classes</argument>

Также изменив порядок

<argument>${project.build.testOutputDirectory}${path.separator}${project.artifactId}-${project.version}.jar${path.separator}lib/*</argument>

Я также пытался удалите * и используйте разные версии плагина 0.8, 0.9. У меня всегда один и тот же результат, он отлично работает в моей локальной среде в Windows, но я не могу заставить java процесс работать в конвейере в Linux.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...