生成来自以下清单类路径,类路径>在蚂蚁 [英] Generate manifest class-path from <classpath> in Ant

查看:155
本文介绍了生成来自以下清单类路径,类路径>在蚂蚁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的构建文件,jar目标是指jar.class.path属性的清单类路径中。编译目标是指project.class.path

有是冗余这里,因为jar.class.path和project.class.path非常相似。他们必须添加库时都更新的,它可以是一个痛苦,如果库列表中变得很长。有没有更好的办法?任何解决方案必须跨平台和始终使用相对路径。

编辑:结果
它应该生成一个文件集的JAR类路径,而不是周围的其他方式,这样我就可以使用通配符如包括所有的JAR文件的目录。

 <?XML版本=1.0&GT?;
<,项目名称=希金斯默认为罐子BASEDIR =>    <属性名=jar.class.pathVALUE =LIB /表单1.2.0.jar的lib / BrowserLauncher.jar/>    &所述;路径ID =project.class.path>
      < pathelement位置=构建/>
      <文件集DIR =lib目录>
        <包括姓名=形式-1.2.0.jar/>
        <包括姓名=BrowserLauncher.jar/>
      < /文件集>
    < /路径>    <目标NAME =prepare>
        < MKDIR DIR =构建/>
    < /目标与GT;    <目标名称=编译取决于=prepare描述=编译内核源>
        < javac的SRCDIR =SRC
               包括=**
               DESTDIR =建
               调试=真
               来源=1.5>
          <类路径REFID =project.class.path/>
        < / javac的>
    < /目标与GT;    <目标名称=罐子依赖=编译描述=生成可执行的JAR文件>
        <罐子jar文件=higgins.jar>
            <&舱单GT;
                <属性名=主类VALUE =nl.helixsoft.higgins.Main/>
                <属性名=类路径值=$ {} jar.class.path/>
            < /清单>
            <文件集DIR =建包括=** / *类。/>
            <文件集DIR =SRC包括=** / *属性。/>
        < /瓶>
    < /目标与GT;< /项目>


解决方案

假设蚂蚁1.7或以上,你可以使用的 manifestclasspath 任务。

 <路径ID =dep.runtime>
    <文件集DIR =./ lib目录>
        <包括姓名=** / *罐子。/>
    < /文件集>
< /路径>
<属性名=dep_cp值=$ {的toString:dep.runtime}/><目标名称=默认>
    < manifestclasspath财产=manifest_cpjar文件=myjar.jar>
        <类路径REFID =dep.runtime/>
    < / manifestclasspath>
    <回声消息=构建类路径:$ {} dep_cp/>
    <回声消息=清单类路径:$ {} manifest_cp/>
< /目标与GT;

In the build file below, the jar target refers to the jar.class.path property for the manifest class-path. The compile target refers to project.class.path

There is redundancy here, because jar.class.path and project.class.path are very similar. They must be both updated when libraries are added, which can be a pain if the list of libraries gets very long. Is there a better way? Any solution must be cross-platform and always use relative paths.

Edit:
It should generate the JAR classpath from a fileset and not the other way around, so I can use wildcards to e.g. include all JAR files in a directory.

<?xml version="1.0"?>
<project name="Higgins" default="jar" basedir=".">

    <property name="jar.class.path" value="lib/forms-1.2.0.jar lib/BrowserLauncher.jar"/>

    <path id="project.class.path">
      <pathelement location="build"/>
      <fileset dir="lib">
        <include name="forms-1.2.0.jar"/>
        <include name="BrowserLauncher.jar"/>
      </fileset>
    </path>

    <target name="prepare">
        <mkdir dir="build"/>
    </target>

    <target name="compile" depends="prepare" description="Compile core sources">
        <javac srcdir="src"
               includes="**"
               destdir="build"
               debug="true"
               source="1.5">
          <classpath refid="project.class.path"/>
        </javac>
    </target>

    <target name="jar" depends="compile" description="Generates executable jar file">
        <jar jarfile="higgins.jar">
            <manifest>
                <attribute name="Main-Class" value="nl.helixsoft.higgins.Main"/>
                <attribute name="Class-Path" value="${jar.class.path}"/>
            </manifest>
            <fileset dir="build" includes="**/*.class"/>            
            <fileset dir="src" includes="**/*.properties"/>         
        </jar>
    </target>

</project>

解决方案

Assuming Ant 1.7 or above, you can use the manifestclasspath task.

<path id="dep.runtime">
    <fileset dir="./lib">
        <include name="**/*.jar" />
    </fileset>
</path>
<property name="dep_cp" value="${toString:dep.runtime}" />

<target name="default">
    <manifestclasspath property="manifest_cp" jarfile="myjar.jar">
        <classpath refid="dep.runtime" />
    </manifestclasspath>
    <echo message="Build Classpath: ${dep_cp}" />
    <echo message="Manifest Classpath: ${manifest_cp}" />
</target>

这篇关于生成来自以下清单类路径,类路径&GT;在蚂蚁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆