多项目构建和Reactor
在Maven中,Reactor是一个用于控制多项目构建的工具。Reactor用Werkz包,并根据每个项目 各自定义的依赖关系来安排构建顺序。Reactor的意图在于:鼓励创建/重构具有更小、更松散、 更有一致性单元的项目。r源于面向组件编程,在向组件编程中,整个系统由许多松散的个体 构成,这些个体需要聚合起来作为一个整体进行部署。
Reactor可以为某个项目集执行一个任意编排的目标列表。所以,如果使用Reactor的话,它 可以用来做项目站点生成,任意jar包生成这样的事情。
目前 db.apache.org 站点就是收集了其子项目的 丰富信息、并与一系列的Velocity 模板合成的。这一过程是由 Jelly Velocity 标签库来完成的。 这里是其中的机制,有兴趣可以看看。
Plexus(一个基于Avalon的容器)组件的manifest是遍历所有Plexus组件、并聚合而成的。这里 使用的还是Velocity模板和Jelly Volocity标签库。 这里是其中的机制,有兴趣可以看看。
这里是一个使用Reactor标签,遍历一系列组件,最后产生项目站点的例子:
<goal
name="project-site"
description="Generate the site for the entire project">
<!-- Generate the site for each of the components. -->
<maven:reactor
basedir="${basedir}/components"
postProcessing="true"
includes="*/project.xml"
excludes="bad-component/*"
goals="site"
banner="Generating Site"
ignoreFailures="true"/>
<!--
|
| At this point because 'postProcessing' was turned on we have all
| the processed POMs available to us in the ${reactorProjects} variable.
|
在Maven中,Reactor是一个用于控制多项目构建的工具。Reactor用Werkz包,并根据每个项目 各自定义的依赖关系来安排构建顺序。Reactor的意图在于:鼓励创建/重构具有更小、更松散、 更有一致性单元的项目。r源于面向组件编程,在向组件编程中,整个系统由许多松散的个体 构成,这些个体需要聚合起来作为一个整体进行部署。
Reactor可以为某个项目集执行一个任意编排的目标列表。所以,如果使用Reactor的话,它 可以用来做项目站点生成,任意jar包生成这样的事情。
目前 db.apache.org 站点就是收集了其子项目的 丰富信息、并与一系列的Velocity 模板合成的。这一过程是由 Jelly Velocity 标签库来完成的。 这里是其中的机制,有兴趣可以看看。
Plexus(一个基于Avalon的容器)组件的manifest是遍历所有Plexus组件、并聚合而成的。这里 使用的还是Velocity模板和Jelly Volocity标签库。 这里是其中的机制,有兴趣可以看看。
这里是一个使用Reactor标签,遍历一系列组件,最后产生项目站点的例子:
<goal
name="project-site"
description="Generate the site for the entire project">
<!-- Generate the site for each of the components. -->
<maven:reactor
basedir="${basedir}/components"
postProcessing="true"
includes="*/project.xml"
excludes="bad-component/*"
goals="site"
banner="Generating Site"
ignoreFailures="true"/>
<!--
|
| At this point because 'postProcessing' was turned on we have all
| the processed POMs available to us in the ${reactorProjects} variable.
|