rpm-maven-plugin как контролировать имя, под которым rpm хранится в репозитории m2?

В нашей организации существует соглашение по именованию rpm. Как правило, у rpm будет более короткое базовое имя, чем у проекта Maven. Существует также соглашение о том, как называются релизы. Итак, нам нужно имя вроде ${shortname}-${project.version}-${release}.noarch.rpm.

Я хочу создавать такие rpm-пакеты, используя rpm-maven-plugin, а не старую технологию nmake.

И это легко сделать с помощью параметров плагина. RPM-файл, сгенерированный в целевом каталоге, имеет нужное имя.

Однако, когда mvn install устанавливает этот rpm в репозиторий maven, он настаивает на его хранении «способом maven»: ${project.artifactId}-${project.version}.rpm

Я хочу, чтобы rpm хранился в стандартном каталоге репозитория maven, используя имя, изначально созданное в package.

Как я могу это сделать?

Обновление: я пытался использовать maven-install-plugin (цель install-file) и не получил результатов, которые мне были нужны. Но это было отчасти потому, что я не вызывал его должным образом. Его не вызывали. Если вы определяете цель файла установки, она должна быть явно привязана к этапу установки. Это, то есть добавление <phase>install</phase> в конфигурацию, по крайней мере, вызвало выполнение установки, которую я хотел, но по-прежнему не позволяло мне назвать rpm по желанию.


person Steve Cohen    schedule 07.12.2015    source источник


Ответы (1)


По словам Карла Хайнца Марбейса, коммиттера проекта Apache Maven, то, что я пытаюсь сделать, невозможно, и не следует пытаться.

Однако мне нужно то, что мне нужно, и я нашел компромисс, который дает мне большую часть этого. Единственное, чем мне пришлось пожертвовать, это предположение, что RPM репозитория должен находиться в том же каталоге репозитория, что и остальная часть проекта. Это очень незначительная жертва. Как только я это сделаю, я могу сохранить rpm с тем именем, которое я хочу, в каталоге репозитория Maven с коротким именем.

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
                <execution>
                        <id>install-rpm</id>
                        <goals>
                                <goal>install-file</goal>
                        </goals>
                        <phase>install</phase>
                        <configuration>
                                <file>${project.build.directory}/rpm/${rpm.name}/RPMS/noarch/${rpm.name}-${project.version}-${rpm.release}.noarch.rpm</file>
                                <groupId>${project.groupId}.rpms</groupId>
                                <artifactId>${rpm.name}</artifactId>
                                <version>${project.version}-${rpm.release}</version>
                                <classifier>noarch</classifier>
                                <packaging>rpm</packaging>
                        </configuration>
                </execution>
        </executions>
</plugin>

Использование groupId, равного ${project.groupId}.rpms, а не просто ${project.groupId}, позволяет всем rpm-пакетам, построенным таким образом, жить вне основной ветки репозитория, что полезно в нашей ситуации.

Использование версии ${project.version}-${rpm.release}, а не только ${project.version}, позволяет включить выпуск в название.

И классификатор noarch также включает это в название.

person Steve Cohen    schedule 08.12.2015