我应该如何引用我项目的每个依赖项?

时间:2012-11-07 01:57:26

标签: version-control project-management dependency-management

我想我想将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和我的所有设备驱动程序。适当的分界线在哪里?

Apache Ant

为了编译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

现在我可以使用如下命令从项目目录的根目录编译RoadRunner:

apache-ant-1.8.4\bin\ant -buildfile RoadRunner\build.xml

输出是新RoadRunner\build目录中的一组类文件。

我已将此命令保存到名为Compile RoadRunner.bat的批处理脚本中。

我认为我应该至少将Ant项目和批处理脚本提交到我的项目中,但我不确定其余部分。

0 个答案:

没有答案