我正在使用maven-docbkx-plugin从docbook源生成HTML和PDF输出。我有几本书,这些书使用olinks相互链接。
olink数据库是在一个maven阶段(generate-resources)生成的,查找此数据库的实际HTML和PDF生成在后续的maven阶段(编译)中执行。
我已将maven项目划分为多模块项目,因为每本书都包含数十个子文档。 docbkx-maven-plugin配置全部在父级中完成,然后它只是需要在子POM中指定的顶级docbook源。
但是......这在依赖性方面不起作用,因为每个模块都要求在运行其编译阶段之前运行每个其他模块的generate-resources,以便它可以访问每个模块的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 :(得分:1)
我已经对此进行了更多的研究,从我所读到的,我所要求的是不可能的(但我很乐意以其他方式建议)。我将我的项目拆分为两个,并给他们一个共同的父母,他们可以从中绘制他们的共同配置。
答案 1 :(得分:0)
我解决此问题的另一种方法是使用maven配置文件。我执行第一个配置文件中所有模块的第一次传递,然后在第二个配置文件中执行第二次传递。
这意味着项目必须运行两次才能构建所有工件,但它比在多个项目中传播源代码更具可维护性。