Могу ли я в Maven упаковать проект JEE в Zip-архив вместе со сценариями SQL?

Привет всем, прежде всего,

Предположим, у меня есть проект JEE, содержащий несколько модулей и папку «sql» внутри:

Изображение структуры проекта

Я собираю все модули в архивный файл «integration-version.ear». Вот содержание моей цели:

Содержимое целевой папки

Используя Maven, я могу построить что-то вроде этого:

Целевой контент цели

Целевая структура архива

В папке «3.15» есть несколько файлов SQL из той же папки моего проекта.

Является ли это возможным? Какая конфигурация Maven необходима?


Примечание.

Первоначальный вопрос был таким: «Могу ли я в Maven упаковать проект JEE в архив RAR вместе с SQL-скриптами?» но теперь вопрос изменился, потому что RAR является проприетарным форматом, и все инструменты, создающие файлы RAR, должны иметь коммерческую лицензию.


Решение:

Использование плагина build-helper-maven

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>parse-version</goal>
            </goals>
            <configuration>
                <propertyPrefix>parsedVersion</propertyPrefix>
            </configuration>
        </execution>
...

Использование плагина maven-assembly

пом.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.6</version>
    <inherited>false</inherited>
    <configuration>
        <descriptors>
            <descriptor>${project.basedir}/../assembly.xml</descriptor>
        </descriptors>
    </configuration>
...

сборка.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
   <id>release</id>
   <baseDirectory>${file.separator}</baseDirectory>
   <formats>
      <format>zip</format>
   </formats>
   <fileSets>
      <fileSet>
         <directory>${project.basedir}/../sql/migrates/${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</directory>
         <outputDirectory>/scripts-${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</outputDirectory>
         <includes>
            <include>**/*.sql</include>
         </includes>
      </fileSet>
   </fileSets>
   <dependencySets>
      <dependencySet>       
        <outputFileNameMapping>${build.finalName}.${packaging}</outputFileNameMappin>
        <includes>
         <include>*:ear</include>
        </includes>
      </dependencySet>
    </dependencySets>
</assembly>

person JAlexey    schedule 29.01.2019    source источник


Ответы (1)


Есть 2 плагина Maven, которые могут это сделать: maven-assembly-plugin и maven-rar-plugin

Если вы хотите использовать maven-rar-plugin, я бы создал новый модуль с упаковкой rar и настроил плагин.

Лично я считаю, что maven-assembly-plugin проще в использовании.

person wirnse    schedule 31.01.2019
comment
maven-rar-plugin делает не то, что вы думаете. В Java EE файл RAR — это способ упаковки реализаций JCA. Это не формат сжатия. т. е. maven-rar-plugin создает продукт Java EE, он не предназначен для сборки произвольного набора артефактов в один файл, сжатый с использованием формата RAR. - person Steve C; 01.02.2019
comment
я думаю, что я неправильно понял вопрос. Что хотел @JAlexey, так это архив rar (приложение типа mime / x-rar-compressed)? я только что попытался создать архивы с maven-assembly-plugin и maven-rar-plugin, оба являются приложением типа mime/zip. я должен удалить свой ответ? - person wirnse; 01.02.2019
comment
Я не верю, что плагин сборки поддерживает архивы RAR, вероятно, потому, что это проприетарный формат. Инструменты для создания файлов RAR должны иметь коммерческую лицензию. См. en.wikipedia.org/wiki/RAR_(file_format). Хороший ответ может объяснить это, а затем продемонстрировать, как использовать плагин сборки для создания ZIP-файла. Это может удовлетворить требование @JAlexey по упаковке его файла EAR и сценариев обновления вместе. - person Steve C; 02.02.2019
comment
Здравствуйте, спасибо за ваши ответы. Теперь я понимаю, что мой вопрос был некорректен. Я не думал о формате архива. Я изменю свой вопрос и добавлю примечание о старой версии и о том, что мы узнали благодаря Стиву С. Zip больше подходит для этой цели. Я также использую maven-assembly-plugin и пробовал maven-rar-plugin, но мне не удалось поместить файл «ear» в архив. @Wirnse, если вы сможете привести простой пример с настройками, это будет очень полезно для меня. - person JAlexey; 04.02.2019
comment
Здорово, что недоразумение устранено :-D. Что вам нужно, так это dependencySet, чтобы добавить ear. Ознакомьтесь с документацией. - person wirnse; 04.02.2019
comment
Спасибо, @Wirnse. Я успешно настроил плагин. Набор зависимостей подходит для этого очень хорошо. Чуть позже добавлю описание своих настроек. - person JAlexey; 04.02.2019