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



我有以下蚂蚁邮件任务-

<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>

我的项目"lib"文件夹中有激活和邮件jar。我希望能够发送邮件,而不必将这些罐子保存在蚂蚁下载位置。是否可以让ant知道我的"lib"文件夹,以查看javaxmail和activationjar。比如如果我可以在这个目标中指定来自的类路径。

现在,当我执行这个目标时,我总是遇到异常-

BUILD FAILED
java.lang.ClassNotFound
Exception: javax.mail.internet.MimeMessage

不幸的是,你不能。您必须以某种方式将Library Dependencies放入ant类路径中。

这可能是ANTH_HOME/lib目录,也可能是对命令行参数的更改。

Ant有一个命令行参数来指定lib目录:

-lib <path> specifies a path to search for jars and classes

你也可以用这个信息从蚂蚁本身调用蚂蚁,这可能有点难看:

<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_ARGS使其可用于所有的ant脚本
被迫使用ant中的exec任务来解决库依赖似乎非常奇怪。

在Eclipse中,常见的做法是在存储库中创建一个模块(cvs、subversion、git(。然后,每个团队成员的工作空间中都有该模块,只需使用CCD_ 2以使这些依赖关系可用于蚂蚁。

这里已经回答了一个不错的方法。它使用Ant任务类加载器解决了这个问题:

<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>

相关内容

  • 没有找到相关文章

最新更新