Межмодульные зависимости от дополнительных сборок во время выпуска Maven - PullRequest
1 голос
/ 17 марта 2011

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

  • База данных
  • Постоянство
  • Бизнес
  • Приложение

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

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

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

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

0 голосов
/ 22 марта 2011
...