我想我想将RoadRunner存储在我的项目存储库中。通过向RoadRunner源代码添加构建文件,我创建了一个通用的构建过程。这是否算作修改项目?构建文件可以被其他项目用来编译RoadRunner,但我还不知道那些可能是什么。
我想我想将Apache Ant存储为项目存储库之外的二进制文件。我不认为我会修改Ant,我认为我不会需要多个版本,我可能会用它来驱动其他项目中的构建过程。
下面的编译脚本是指使用相对路径apache-ant-1.8.4\bin\ant
的ant工具。我可以在Program Files中安装它并将其bin
目录添加到路径中,而只是引用ant
。
我将Ant视为外部依赖,就像我看到Java一样。我从未有过令人信服的理由将精确的Java发行版存储在我的项目存储库中。
为了将所有依赖项保存在一个地方,我可以在存储库中保留Apache Ant二进制文件的副本。这就是RoadRunner工具如何在NekoHTML,Xerces及其自己的RoadRunner库上分发其依赖项。考虑到极端,我可能包括Java,Windows和我的所有设备驱动程序。适当的分界线在哪里?
为了编译RoadRunner源代码,我选择Apache Ant作为自动构建工具。这比使用命令行技巧recursive compilation with javac更容易,并且在我需要它时会提供更大的灵活性。
我不想修改Ant或检查它的实现,但我需要它来执行构建脚本。在这种情况下,二进制分布比源分发更方便。我将1.8.4 binary archive版本下载到我自己项目的工作目录中,并将存档解压缩到一个名为apache-ant-1.8.4的子目录中。
RoadRunner是一个用Java编写的实验性开源工具,用于为HTML生成数据提取包装器。我想在我自己的商业智能项目中使用它。
我想研究RoadRunner的实现,并可能会修改它以满足我的需求。在这种情况下,源分配很方便。在任何情况下,都没有二进制分发。我下载了版本0.02.11 source archive我自己项目的工作目录,并将存档解压缩到一个名为RoadRunner的子目录中。
我调整了Apache Ant example buildfile并将其添加到RoadRunner目录中。它看起来像这样:
<project name="RoadRunner" default="build" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src/roadrunner"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<path id="lib">
<!-- https://stackoverflow.com/questions/722774/getting-ant-javac-to-recognise-a-classpath -->
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by build -->
<mkdir dir="${build}"/>
</target>
<target name="build" depends="init"
description="build the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}" classpathref="lib"/>
</target>
<target name="dist" depends="build"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
现在我可以使用如下命令从项目目录的根目录编译RoadRunner:
apache-ant-1.8.4\bin\ant -buildfile RoadRunner\build.xml
输出是新RoadRunner\build
目录中的一组类文件。
我已将此命令保存到名为Compile RoadRunner.bat
的批处理脚本中。
我认为我应该至少将Ant项目和批处理脚本提交到我的项目中,但我不确定其余部分。