Как запустить скрипт перед созданием файла 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 и создайте его после того, как все другие модули уже собраны (и упакуйте их артефакты, как и планировалось).
Надеюсь, это поможет.