从Ant任务中获取对修改列表的引用

时间:2011-12-01 16:06:38

标签: ant cruisecontrol

我尝试开发巡航控制步骤,该步骤将处理数据库迁移脚本并应用它们。

我希望能够从SourceControl获取修改列表(以查看是否需要应用任何新的数据库更改)。

我是如何实现这一目标的?我知道这些信息被写入log xml但是我想知道是否有一个简单的机制来从Ant构建器获取对它的引用。

我已经研究过编写自定义CC Listener或Builder插件,但是在接口中都没有提供。

2 个答案:

答案 0 :(得分:2)

我们将“svn update”作为ant builder中的一个步骤,稍后我们使用重定向到文件的输出(也可以使用ant属性):

<exec executable="svn" dir=".">
   <arg line="up"/>
   <redirector output="svnup.log" alwayslog="true" append="true"/>
</exec>
<property name="svnup.log" value="svnup.log"/> 

这将在build文件夹中创建名为“svnup.log”的文件,并输出“svn up”命令。

答案 1 :(得分:0)

我想我会尝试编写一个实现Publisher

的自定义插件
@Override
public void publish(Element cruisecontrolLog) throws CruiseControlException {     XMLLogHelper xmlHelper = new XMLLogHelper(cruisecontrolLog);
  Set<Modification> modifications = xmlHelper.getModifications();
  for (Modification modification : modifications) {
    handleModification(modification);           
  }
}

或者另一个想法是使用sscm ant任务中的timestamp标志与提供给ant构建器的cclastbuildtimestamp属性相结合,以生成自上次构建以来更改的文件列表。