Привет всем, прежде всего,
Предположим, у меня есть проект 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>