代码之家  ›  专栏  ›  技术社区  ›  Usman Ismail

是否可以从build.xml向ant类路径添加一个jar文件?

  •  0
  • Usman Ismail  · 技术社区  · 13 年前

    我想将PMD jar添加到ant构建中,但我想将jar签入到源代码管理中,这样其他开发人员就不必修改他们的环境。因此,复制到ant lib文件夹不是理想的情况。有没有其他方法可以将jar文件添加到ant类路径中?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Mark O'Connor    13 年前

    我不喜欢在源代码修订系统中管理存储jar。我理解为什么,但是SCM系统不适合存储大型二进制对象。

    以下是一些可供选择的选项,用于使构建在多台机器上可重复:

    选项1:创建一个“引导”目标

    使用ANT get task 将PMD jar下载到ANT可访问的目录中,即$HOME/.ANT/lib:

    <target name="bootstrap" description="Install jars required by build">
        <mkdir dir="${user.home}/.ant/lib"/>
        <get src="http://search.maven.org/remotecontent?filepath=pmd/pmd/4.3/pmd-4.3.jar" dest="${user.home}/.ant/lib/pmd.jar"/>
    </target>
    

    选项2:使用依赖关系管理

    Ivy 可以用于管理构建的所有依赖项(类似于Maven)

    使用ivy的优势在于,它可以用于管理所有构建类路径(使用配置):

    <target name="resolve" description="Use ivy to resolve classpaths">
        <ivy:resolve/>
    
        <ivy:cachepath pathid="compile.path" conf="compile"/>
        <ivy:cachepath pathid="build.path" conf="build"/>
    </target>
    

    一个名为 ivy.xml 然后将列出项目的依赖项

    <ivy-module version="2.0">
        <info organisation="com.myspotontheweb" module="demo"/>
    
        <configurations>
            <conf name="compile" description="Required to compile application"/>
            <conf name="build"   description="Required by the ANT build"/>
        </configurations>
    
        <dependencies>
            <!-- compile dependencies -->
            <dependency org="org.slf4j" name="slf4j-api" rev="1.6.4" conf="compile->default"/>
    
            <!-- build dependencies -->
            <dependency org="pmd" name="pmd" rev="4.3" conf="build->default"/>    
        </dependencies>
    
    </ivy-module>
    

    这个选项看起来更复杂,但它可以用于管理所有第三方罐子。它还可以理解一个jar对其他jar可能具有的传递依赖关系。

    选项3:声纳

    我不知道你是否听说过 Sonar 项目

    可以使用选项1或2安装单个jar文件,这将自动下载以下分析工具所需的jar:

    • 偏振模色散
    • 查找Bugs
    • 方格图案

    非常值得调查!