首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何引用每个项目的依赖项?

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

Stack Overflow用户
提问于 2012-11-07 09:57:26
回答 1查看 74关注 0票数 1

我想我想将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目录。它看起来是这样的:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
apache-ant-1.8.4\bin\ant -buildfile RoadRunner\build.xml

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-11-07 15:09:31

通过在RoadRunner源代码中添加构建文件,我已经创建了一个通用的构建过程。这算不算修改项目?

是的,确实如此。

任何帮助重现构建的东西都是项目历史的一部分。

任何生成或已经构建的内容(比如第三方库)都应该存储在源代码控制引用之外(理想情况下,存储在像Nexus这样的工件存储库中),并且只在构建文件中声明。

在您的情况下,请提交您需要的任何内容,以便其他开发人员能够:

  • clone
  • launch the build (它将找到所有必要的dependencies)
  • test,即由所述build产生的结果交付。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13262219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档