Межмодульные зависимости от дополнительных сборок во время выпуска Maven

У нас есть многомодульный проект со следующими модулями:

  • База данных
  • Упорство
  • Бизнес
  • Применение

Проект «База данных» - это проект 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». В файле журнала указано, что проект «Постоянство» был создан до проекта «Приложение» и что сборка «схемы базы данных» была создана.

Кто-нибудь знает, что я делаю не так?


person woelfle    schedule 17.03.2011    source источник
comment
Связано с stackoverflow.com/questions / 2244344 /   -  person Raghuram    schedule 18.03.2011
comment
На самом деле это не проблема цели «развертывание». Вызов «mvn deploy» работает нормально. Проблема возникает при вызове "mvn release: prepare"   -  person woelfle    schedule 18.03.2011


Ответы (2)


См. http://www.mail-archive.com/[email protected]/msg117321.html для ответа

person woelfle    schedule 22.03.2011

Использование командной строки «mvn -DpreparationGoals = install release: prepare» решает проблему. С помощью этой командной строки цель подготовки выпуска: подготовка сначала запускает цель установки, которая устанавливает сборки выпуска в локальном репозитории. Позже на эти сборки можно будет ссылаться в процессе выпуска.

person woelfle    schedule 06.04.2011