Как запустить скрипт перед созданием файла RPM?

Я использую rpm-maven-plugin для создания rpm тарбола, содержащего WARs из моего проекта. Я могу создать rpm, если у меня уже есть файл tar. Тем не менее, я хотел бы сгенерировать файл tar при запуске цели rpm.

У меня есть скрипт, который создает файл tar. Я вызываю скрипт на этапе подготовки, однако rpm уже был создан при выполнении скрипта, поэтому tar не включен в мой rpm.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1-alpha-4</version>
    <executions>
        <execution>
            <id>generate-rpm</id>
            <goals>
                <goal>rpm</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mappings>
          <mapping>
            <directory>/foo</directory>
            <sources>
                <source>
                    <location>DIRECTORY_FOR_MY_TAR</location>
                </source>
            </sources>
          </mapping>
        </mappings>
        <defineStatements>
           <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
        </defineStatements>
        <prepareScriptlet>
            <script>./../../../../scripts/rpm/prepare/makeATar.sh</script>
        </prepareScriptlet>
    </configuration>
</plugin>

Когда я бегу mvn rpm:rpm скрипт makeATar создает tar в DIRECTORY_FOR_MY_TAR, но он не включен в мой RPM. Если я бегу mvn rpm:rpm снова мой tar будет успешно включен в rpm (так как он был помещен в DIRECTORY_FOR_MY_TAR из выполнения makeATar в последний раз, когда я запускал mvn rpm:rpm).

1 ответ

У нас также есть аналогичная установка, где мы собираем некоторые артефакты и затем упаковываем их в RPM с помощью rpm-maven-plugin.
Чтобы упорядочить артефакты, прежде чем мы соберем их как RPM, мы

  • Используйте maven-antrun-plugin на этапе подготовки пакета, чтобы упорядочить все артефакты.
  • Вызовите rpm-maven-plugin как часть фазы пакета

Это работает очень хорошо для нас.
Вы также можете привязать выполнение rpm-maven-plugin к фазе установки и использовать артефакты, которые были пакетами на фазе пакетов.
Или поместите упаковку RPM в отдельный модуль maven и создайте его после того, как все другие модули уже собраны (и упакуйте их артефакты, как и планировалось).

Надеюсь, это поможет.

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