2013-11-17 2 views
0

Я использую maven-docbkx-plugin для генерации HTML и PDF-данных из источников docbook. У меня есть несколько книг, и они связаны друг с другом, используя olinks.Можно ли указать зависимость от конкретной фазы maven?

База данных оливок генерируется на одной фазе maven (генерации ресурсов), а фактическое генерирование HTML и PDF, которое ищет эту базу данных, выполняется в последующей фазе maven (компиляция).

Я разделил проект maven на мультимодульный проект, так как каждая книга содержит десятки включенных поддокументов. Конфигурация docbkx-maven-plugin выполняется в родительском объекте, тогда это только источник docbook верхнего уровня, который должен быть указан в дочерней POM.

Но ... это не работает по-зависимому, поскольку каждый модуль требует, чтобы генерирующие ресурсы каждого другого модуля выполнялись до того, как он выполнил свою фазу компиляции, чтобы он мог получить доступ к базе данных olink каждого из другие книги.

Есть ли способ сделать это в maven? Или мне нужно переструктурировать два проекта maven (что значительно разрушит модульность этого проекта, так как вся конфигурация должна быть объявлена ​​в каждом проекте)?

Структура родительского POM является: ...

<build> 
    <plugins> 
     <pluginManagenent> 
     <plugin> 
      <groupId>com.agilejava.docbkx</groupId> 
      <artifactId>docbkx-maven-plugin</artifactId> 
      <version>2.0.14</version> 
      <executions> 
      <execution> 
       <id>xrefdb</id> 
       <phase>generate-resources</phase> 
       <configuration> 
       ... 
       </configuration> 
       <goals> 
       <goal>generate-html</goal> 
       </goals> 
      </execution> 

      <execution> 
       <id>html</id> 
       <phase>compile</phase> 
       <configuration> 
       ... 
       </configuration> 
       <goals> 
       <goal>generate-html</goal> 
       </goals> 
      </execution> 
      </executions> 
     </plugin>   
     </pluginManagement> 
    </plugins> 
    </build> 

</project> 

И модули:

<project> 
    ... 

    <build> 
    <plugins> 

     <plugin> 
     <groupId>com.agilejava.docbkx</groupId> 
     <artifactId>docbkx-maven-plugin</artifactId> 
     <version>2.0.14</version> 

     <configuration> 
      ... 
     </configuration> 
     </plugin> 
    </plugins> 
    </build>  
</project> 
+0

Можете ли вы показать минимальный пример, который показывает проблему? Правильно ли вы определили зависимости с другим модулем? Как ты это сделал? – khmarbaise

+0

Я добавил минимальный пример выше. Я не определял явные зависимости между модулями, потому что это создавало бы циклические зависимости, если только я не могу включить фазу в зависимости. –

ответ

1

я сделал немного больше исследований по этому вопросу, и из того, что я прочитал, то, что я прошу, невозможно (но я был бы рад, если бы мне посоветовали иначе). Я разделил мой проект на два и дал им общий родитель, из которого они могут нарисовать общую конфигурацию.

0

Еще один способ решить эту проблему - использовать профили maven. Я выполняю первый проход всех модулей в первом профиле, а затем выполняю второй проход во втором профиле.

Это означает, что проект должен запускаться дважды, чтобы собрать все его артефакты, но он гораздо удобнее обслуживать, чем распространять источники по нескольким проектам.

Смежные вопросы