Java 在外部位置使用邮件和激活jar的ant邮件任务

Java 在外部位置使用邮件和激活jar的ant邮件任务,java,ant,Java,Ant,我有以下ant mail任务- <target name="sendtestreport" > <mail mailhost="smtp.com" mailport="1025" subject="Test build" > <from address="test@gmail.com" /> <replyto address="test@gmail.com" /> &l

我有以下ant mail任务-

<target name="sendtestreport" > 
    <mail mailhost="smtp.com" mailport="1025" subject="Test build" >
        <from address="test@gmail.com" />           
        <replyto address="test@gmail.com" />
        <to address="test@gmail.com" />
        <message>test message</message>
        <attachments>
        </attachments>
    </mail>
</target>
不幸的是,你不能。 您必须以某种方式放入ant类路径

这可能是ANTH_HOME/lib dir或对命令行参数的更改

Ant具有指定lib dir的权限:

-lib <path> specifies a path to search for jars and classes
-lib指定搜索jar和类的路径
你也可以用这些信息从ant本身调用ant,这可能有点难看:

<exec executable="ant">
  <arg value="-lib"/>
  <arg value="PATH_TO_MY_LIB"/>
  <arg value="target"/>
</exec>

如果从eclipse执行此任务,则可以将LIB添加到任务的运行定义中,并与其他开发人员共享此运行定义。

有关ant中库依赖项的解决方案,请参阅

简而言之,将所有ant插件库,例如mail.jar、activation.jar、commons放在一个特殊的文件夹中,并通过使其可用于所有ant脚本。
被迫在ant中使用exec任务来解决库依赖关系似乎很奇怪

在Eclipse中,常见的做法是在存储库中创建一个模块(cvs、subversion、git)。然后,每个团队成员的工作区中都有该模块,并且只需使用
Window>Preferences>Ant>Runtime>Global Entries
使这些依赖项可供Ant使用。

有一种很好的方法已经存在。它通过以下方法解决此问题:


我正在使用命令行执行ant mail任务,它会给我任何方法吗?
<exec executable="ant">
  <arg value="-lib"/>
  <arg value="PATH_TO_MY_LIB"/>
  <arg value="target"/>
</exec>
<taskdef resource="net/jtools/classloadertask/antlib.xml" 
    classpath="ant-classloadertask.jar"/>
<!-- now you can load activation.jar and mail.jar into the project's classpath -->
<classloader loader="project">
    <classpath>
        <pathelement path="lib/activation.jar"/>
        <pathelement path="lib/mail.jar"/>
    </classpath>
</classloader>