繁体   English   中英

蚂蚁运行的.jar文件不知道其全名

[英]Ant - run .jar file without knowing its full name

我有蚂蚁build.xml看起来像这样:

<project name="project_name" default="build" basedir=".">
<property name="src.dir" value="./src"/>
<property name="build.dir" value="./build"/>
<property name="lib.dir" value="./lib"/>
<property name="jar.name.prefix" value="myprogram-"/>
<property name="output_file.name" value="output"/>

<path id="lib.path">
    <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="init">
    <mkdir dir="${build.dir}"/>
</target>

<target name="build" depends="init">
    <javac srcdir="${src.dir}" destdir="${build.dir}">
        <classpath refid="lib.path"/>
    </javac>
</target>

<target name="dist" depends="build">
    <tstamp/>
    <jar destfile="${jar.name.prefix}${DSTAMP}.jar" basedir="${build.dir}">
        <manifest>
            <attribute name="Main-Class" value="my.app.MainClass"/>
            <attribute name="Project" value="MyApp"/>
            <attribute name="BuildDate" value="${DSTAMP}"/>
        </manifest>
    </jar>
</target>

<target name="clean">
    <delete dir="${build.dir}"/>
    <delete file="${output_file.name}"/>
    <delete>
        <fileset dir=".">
            <include name="*.jar"/>
        </fileset>
    </delete>
</target>
</project>

我想添加运行目标。 但是dist目标生成的文件格式为: myprogram-20161029.jar 因此,应执行的文件名会有所不同,具体取决于构建文件的时间。 运行目标应如下所示:

<target name="run" depends="dist">
     <java jar="what to put here??" fork="true" output="output.file.name"/>
</target>

但是从我看过的Java目标的jar参数只接受.jar文件的位置,我不知道。 我只知道文件名满足模式./${jar.name.prefix}*.jar 有人知道如何获取已构建的.jar文件的文件名,并将其传递给java任务的jar参数吗?

首先,由于“运行”目标取决于“ dist”,因此在“运行”内部可以访问在“ dist”中定义的所有属性。 因此,您可以像这样轻松地使用相同的$ {DSTAMP}(由“ tstamp”目标定义):

<target name="run" depends="dist">
    <java jar="${jar.name.prefix}${DSTAMP}.jar" fork="true" output="output.file.name"/>
</target>

其次,我建议使用以下方式定义自定义变量名称而不是DSTAMP:

<tstamp prefix="jardate"/>

然后,DSTAMP的使用将是$ {jardate.DSTAMP}而不是$ {DSTAMP}。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM