如何包括我的Ant构建一个外部的jar LIB [英] How to include an external jar lib in my Ant build

查看:105
本文介绍了如何包括我的Ant构建一个外部的jar LIB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有如下的的build.xml

 <项目><目标名称=干净>
    <删除DIR =./打造/>
< /目标与GT;<目标名称=编译>
    < MKDIR DIR =./建/班/>
    < javac的SRCDIR =./ SRCDESTDIR =./建/班/>
< /目标与GT;<目标名称=罐子>
    < MKDIR DIR =./建/罐/>
    <罐子destfile =./建/罐/ DependencyFinder.jarBASEDIR =./建/班>
        <&舱单GT;
            <属性名=DependencyFinderVALUE =主/>
        < /清单>
    < /瓶>
< /目标与GT;<目标名称=运行>
    < Java的罐子=./编译/罐/ DependencyFinder.jar类名=$ {主级}叉=真/>
< /目标与GT;< /项目>

下面是我的目录结构:

/编译
/ lib目录
/ MagicFolder
/ src目录
/build.xml

文件夹的src 包含的.java 文件。

路径 MagicFolder 应该是一个输入参数。

LIB 有哪些应该包括在我的体型外部.jar库。

建将已编制文件夹 .jar和 .class`文件

问题:
我应该如何改变我的的build.xml ?我的的build.xml 应该:


  1. 添加外部的lib ./的lib / jbl.jar

  2. 当我运行我的应用程序放在2输入parametrs我的应用程序


解决方案

如果您需要添加一个jar到classpath中编译code(对不起,这是不太清楚你问什么)然后你需要改变<&javac的GT; 任务将是这样的:

 < javac的SRCDIR =./ SRCDESTDIR =./建/班>
    <&类路径GT;
        < pathelement路径=LIB / jbl.jar/>
    < /类路径>
< / javac的>

或者,如果你需要 jbl.jar 的内容添加到您创建的罐子,那么你需要改变你的<罐子> 任务将是这样的:

 <罐子destfile =./建/罐/ DependencyFinder.jarBASEDIR =./建/班>
    < zipgroupfileset DIR =lib目录包括=jbl.jar/>
    <&舱单GT;
        <属性名=DependencyFinderVALUE =主/>
        <属性名=主类VALUE =org.ivanovpavel.YourMainClass/>
    < /清单>
< /瓶>

要参数添加到< java的> 通话,使用嵌套的< ARG> 元素:

 <目标名称=运行>
    < Java的罐子=./编译/罐/ DependencyFinder.jar:LIB / jbl.jar类名=dependencyfinder.DependencyFinder>
        < ARG值=亚历山大·罗森鲍姆/>
        < ARG值=梅德Malikov/>
    < / JAVA>
< /目标与GT;

I have the following build.xml:

<project>

<target name="clean">
    <delete dir="./build"/>
</target>

<target name="compile">
    <mkdir dir="./build/classes"/>          
    <javac srcdir="./src" destdir="./build/classes"/>                   
</target>

<target name="jar">
    <mkdir dir="./build/jar"/>
    <jar destfile="./build/jar/DependencyFinder.jar" basedir="./build/classes">
        <manifest>
            <attribute name="DependencyFinder" value="main"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java jar="./build/jar/DependencyFinder.jar" classname="${main-class}" fork="true"/>                    
</target>

</project>

Here is my directory structure:

/build /lib /MagicFolder /Src /build.xml

Folder src contains .java files.

Path to MagicFolder should be an input parameter.

lib has external .jar library which should be included in my build.

build folder which will have compiled .jar and.class` files

QUESTION: How should I change my build.xml? My build.xml should:

  1. Add external lib ./lib/jbl.jar
  2. When I run my application put 2 input parametrs for my application

解决方案

If you need to add a jar to classpath to compile the code (sorry, it isn't quite clear what you're asking for), then you need to change <javac> task to look like this:

<javac srcdir="./src" destdir="./build/classes">   
    <classpath>
        <pathelement path="lib/jbl.jar"/>
    </classpath>
</javac>

Or if you need to add contents of jbl.jar to the jar you are creating, then you need to change your <jar> task to look like this:

<jar destfile="./build/jar/DependencyFinder.jar" basedir="./build/classes>
    <zipgroupfileset dir="lib" includes="jbl.jar" />
    <manifest>
        <attribute name="DependencyFinder" value="main"/>
        <attribute name="Main-Class" value="org.ivanovpavel.YourMainClass"/>
    </manifest>
</jar>

To add arguments to <java> call, use nested <arg> elements:

<target name="run">
    <java jar="./build/jar/DependencyFinder.jar:lib/jbl.jar" classname="dependencyfinder.DependencyFinder">  
        <arg value="Alexander Rosenbaum"/>
        <arg value="Dmitry Malikov"/>
    </java>                  
</target>

这篇关于如何包括我的Ant构建一个外部的jar LIB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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