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

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

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

The project structure image

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

The content of target folder

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

The purposed content of target

The purposed structure of archive

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

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


Примечание:

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


Решение:

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

<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-plugin

pom.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>
...

Assembly.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>

1 Ответ

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

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

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

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

...