У нас есть многомодульный проект со следующими модулями:
- База данных
- Упорство
- Бизнес
- Применение
Проект «База данных» - это проект jar, который создает дополнительную сборку с помощью плагина maven-assembly-plugin. Эта дополнительная сборка содержит схему базы данных.
Конфигурация плагина следующая:
<plugin>
<!-- create a zip file that contains all the db migration scripts. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-schema</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>db-schema-descriptor.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
Проект «Приложение» создает заархивированную версию структуры каталогов приложения. Поэтому он ссылается на сборку схемы, чтобы извлечь и скопировать ее в соответствующее место в структуре каталогов приложения. Ссылка выражается как обычная зависимость от maven:
<dependency>
<groupId>my.application</groupId>
<artifactId>persistence</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>db-schema</classifier>
</dependency>
По крайней мере, существует многомодульный проект, который объединяет 4 подмодуля для создания приложения за один шаг.
Запуск mvn deploy в общем проекте работает нормально. Сборка схемы базы данных извлекается и копируется. Но при запуске «mvn release: prepare» на агрегированном проекте, строящем проект «Application», происходит сбой с уведомлением об ошибке, что maven не может найти сборку схемы с версией «0.0.1». В файле журнала указано, что проект «Постоянство» был создан до проекта «Приложение» и что сборка «схемы базы данных» была создана.
Кто-нибудь знает, что я делаю не так?