我想我想将 RoadRunner 作为源存储在我的项目存储库中。通过向 RoadRunner 源代码添加构建文件,我创建了一个通用的构建过程。这算作修改项目吗?其他项目可以使用构建文件来编译 RoadRunner,但我还不知道那些可能是什么。
我想我想将 Apache Ant 作为二进制文件存储在我的项目存储库之外。我不认为我会修改 Ant,我认为我需要的版本不会超过一个,而且我可能会用它来驱动其他项目的构建过程。
下面的编译脚本是指使用相对路径的ant工具apache-ant-1.8.4\bin\ant
。我可以将它安装在 Program Files 中并将其bin
目录添加到路径中,然后直接引用ant
。
我将 Ant 视为外部依赖项,就像我看到 Java 一样。我从来没有一个令人信服的理由将确切的 Java 发行版存储在我的项目存储库中。
为了将所有依赖项保存在一个位置,我可以在存储库中保留一份 Apache Ant 二进制文件的副本。这就是 RoadRunner 工具如何分发其对 NekoHTML、Xerces 和它自己的 RoadRunner 库的依赖项的方式。极端情况下,我可能包括 Java、Windows 和我所有的设备驱动程序。合适的分界线在哪里?
阿帕奇蚂蚁
为了编译 RoadRunner 源代码,我选择了 Apache Ant 作为自动构建工具。使用javac 进行递归编译比使用命令行技巧更容易,并且在我需要时提供更大的灵活性。
我不想修改 Ant 或检查它的实现,但我需要它来执行构建脚本。在这种情况下,二进制分发比源分发更方便。我将 1.8.4 版本的二进制存档下载到我自己项目的工作目录中,并将存档解压缩到名为 apache-ant-1.8.4 的子目录中。
跑路者
RoadRunner是一个用 Java 编写的实验性开源工具,用于为 HTML 生成数据提取包装器。我想在我自己的商业智能项目中使用它。
我想研究 RoadRunner 的实现,并可能对其进行修改以满足我的需要。在这种情况下,源分布很方便。无论如何,没有二进制分布。我下载了我自己项目工作目录的 0.02.11 版源存档,并将存档解压缩到名为 RoadRunner 的子目录中。
我修改了 Apache Ant示例构建文件并将其添加到 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
现在我可以使用如下命令从项目目录的根目录编译 RoadRunner:
apache-ant-1.8.4\bin\ant -buildfile RoadRunner\build.xml
输出是新RoadRunner\build
目录中的一组类文件。
我已将此命令保存到名为Compile RoadRunner.bat
.
我认为我应该至少将 Ant 项目和批处理脚本提交到我的项目中,但我不确定其余的。