我有一个Java项目,它依赖于其他Java项目,这些项目是兄弟项目,并且存在依赖链。每个单独的项目都有一个用Ant编写的构建脚本。为清楚起见,下面是相同的样品。
-
EARProject
依赖于WebProject
和EJBProject
:构建EARProject
需要WebProject
生成的war
文件和EJBProject
生成的jar
文件。 -
WebProject
依赖于ComponentOneProject
:构建WebProject
需要ComponentOneProject
生成的jar
文件。 -
EJBProject
依赖于ComponentTwoProject
:构建EJBProject
需要ComponentTwoProject
生成的jar
文件。
因此,当我构建EARProject
构建时,如果相关的war
和jar
尚未构建,那么它应该启动WebProject
构建和EJBProject
构建,如果ComponentOneProject
尚未构建,则需要启动ComponentOneProject
构建,依此类推。
谁能建议一个干净的方法,我们可以做到这一点?
面对同样的问题,我们公司编写了一个定制的Groovy脚本,该脚本探索了完整的依赖树,并基于所有的。project、。classpath和。settings/*文件生成了ant构建脚本。这并不像一开始看起来那么困难。这样,我们就可以在一个干净的CVS+JDK+Groovy虚拟机上构建我们的产品,而不需要(My)Eclipse。