installAtEnd и deployAtEnd не выполняются в конце сборки - PullRequest
0 голосов
/ 18 января 2019

У меня есть многомодульный проект с такой структурой:

  • сборка
    • модуль
    • module.bom
    • rcp.build
      • module.rcp

Оба строят проекты, где раньше работали отдельно. Теперь, когда я их сложил, installAtEnd и deployAtEnd не работают. Я добавил их так:

    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>2.5.2</version>
      <configuration>
        <installAtEnd>true</installAtEnd>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.8.2</version>
      <configuration>
        <deployAtEnd>true</deployAtEnd>
      </configuration>
    </plugin>

Я не настраивал плагины, кроме вышеперечисленного. Тем не менее, каждый раз, когда я запускаю сборку, я получаю следующий журнал:

[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ module.rcp ---
[INFO] Installing group:module.rcp:0.1.6-SNAPSHOT at end
[INFO] 
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ module.rcp ---
[INFO] Deploying group:module.rcp:0.1.6-SNAPSHOT at end
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] modules ............................................. SUCCESS [  3.339 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2019-01-18T12:54:18+01:00
[INFO] ------------------------------------------------------------------------

Maven забыл установить / развернуть.

Я нашел эту ошибку и этот вопрос , что говорит о том, что это может быть связано с Тихо. Поэтому я добавил подключаемые модули Tycho к родительскому pom.xml , который ничего не делал. Затем я полностью удалил модуль RCP. Все та же проблема.

Теперь у спецификации все еще есть родительский объект, который не является "сборкой" проекта Maven, и удаление его / изменение родительского объекта приводит к правильной установке и развертыванию сборки. Однако, поскольку это спецификация, я не могу использовать родительский элемент "build".

Есть ли другой способ заставить installAtEnd и deployAtEnd работать в структуре моего проекта?

1 Ответ

0 голосов
/ 28 января 2019

Как указано khmarbaise , можно использовать следующее расширение Maven: https://github.com/khmarbaise/maven-deployer-extension

Обратите внимание, что этот подход не будет работать на Jenkins, поскольку он не поддерживает расширения ядра Maven . (Я бы сказал «пока», но JENKINS-30058 - это 4-летняя ошибка блокировщика, поэтому я полагаю, что она не будет исправлена ​​в ближайшее время.) Если сборка должна работать и на Jenkins, похоже, нет другой вариант, кроме отключения deployAtEnd и installAtEnd или удаления второго родительского POM из модулей.


Сегодня я нашел еще одну причину, по которой сборка не развертывается при поддержке более старого проекта. Было что-то вроде этого:

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
        </plugin>

Удаление <extensions> заставило проект развернуться снова.

...