我想我想将RoadRunner作为源代码存储在我的项目存储库中。通过向RoadRunner源代码添加一个构建文件,我已经创建了一个通用的构建过程。这算不算修改项目?构建文件可以被其他项目用来编译RoadRunner,但我还不知道它们是什么。
我想将Apache Ant以二进制形式存储在我的项目存储库之外。我不认为我将修改Ant,我不认为我将需要一个以上的版本,我可能会使用它来驱动其他项目中的构建过程。
下面的编译脚本使用相对路径apache-ant-1.8.4\bin\ant引用ant工具。我可以将它安装在Program Files中,并将其bin目录添加到path中,只需参考ant即可。
我把Ant看作是一个外部依赖,就像我把Java看作外部依赖一样。我从来没有一个令人信服的理由将确切的Java发行版存储在我的项目存储库中。
为了将所有依赖项保存在一个位置,我可以在存储库中保留Apache Ant二进制文件的副本。这就是RoadRunner工具在NekoHTML、Xerces和它自己的RoadRunner库上发布依赖项的方式。在极端情况下,我可能包括Java、Windows和我的所有设备驱动程序。合适的分界线在哪里?
Apache Ant
为了编译RoadRunner源代码,我选择了Apache Ant作为自动构建工具。它比使用命令行技巧来执行recursive compilation with javac更容易,并且在我需要时提供了更多的灵活性。
我不想修改Ant或检查它的实现,但我需要它来执行构建脚本。在这种情况下,二进制分布比源分布更方便。我将1.8.4Ant版本下载到我自己项目的工作目录中,并将归档文件解压缩到一个名为apache- binary archive - 1.8.4的子目录中。
RoadRunner
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
现在,我可以使用如下命令从项目目录的根目录编译RoadRunner:
apache-ant-1.8.4\bin\ant -buildfile RoadRunner\build.xml输出是新RoadRunner\build目录中的一组类文件。
我已经将此命令保存到一个名为Compile RoadRunner.bat的批处理脚本中。
我认为我至少应该将Ant项目和批处理脚本提交到我的项目中,但我不确定其余的。
发布于 2012-11-07 15:09:31
通过在RoadRunner源代码中添加构建文件,我已经创建了一个通用的构建过程。这算不算修改项目?
是的,确实如此。
任何帮助重现构建的东西都是项目历史的一部分。
任何生成或已经构建的内容(比如第三方库)都应该存储在源代码控制引用之外(理想情况下,存储在像Nexus这样的工件存储库中),并且只在构建文件中声明。
在您的情况下,请提交您需要的任何内容,以便其他开发人员能够:
https://stackoverflow.com/questions/13262219
复制相似问题