我的任务是为我们的Ant构建脚本创建自动通知。这样当有人推出部署时,我们的团队可以自动收到有关它的电子邮件。如何以编程方式为邮件任务添加Ant库依赖关系
最明显的选择是使用Ant's mail task,这与Ant预定义:
<target name="notify" description="notify team">
<mail subject="latest deployment">
<from address="[email protected]" />
<to address="[email protected]" />
<message>A new build has been pushed out to prod</message>
</mail>
</target>
然而,这将导致以下运行时异常:
java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
这是因为蚂蚁的邮件任务取决于JavaMail和JavaBeans Activation Framework,这些库显然不包含在其发行版中。为什么Ant会定义一个依赖于图书馆的任务,但不包括那个图书馆对我来说还不清楚。
此问题已经讨论过此问题:ant mail task using mail and activation jar in external location。根据答案,似乎有两个解决方案。
首先是手动将这些库依赖关系放在ant类路径上。这可以使用-lib
命令行参数来完成,或者在eclipse中可以使用Window > Preferences > Ant > Runtime > Global Entries
,然后添加mail.jar
和activation.jar
(我敢肯定,这和-lib
是一样的东西,如果我错了,请纠正我)。但这种解决方案对我们的团队来说是不可取的,因为这意味着我们每个人都必须手动执行这些步骤。我正在寻找一种方法来简单地提交我的通知代码,并且它应该在svn更新之后的另一个eclipse安装上工作。
中的链接后另一种解决方案中提到一种以编程方式做以上,从自身调用蚂蚁:
<exec executable="ant">
<arg value="-lib"/>
<arg value="PATH_TO_MY_LIB"/>
<arg value="target"/>
</exec>
这样做的问题是,Ant命令行工具显然只包含在完全安装,而不是eclipse发行版。如果没有任何人想要使用邮件任务,那么再也无法使其工作。
有没有什么办法可以自动执行此操作,而无需在项目设置中添加另一个烦人的步骤?我真的不明白为什么这很难实现 - 看起来如果邮件任务不是由Ant预定义的,这将更容易。希望我错过了一些东西。
您是否考虑过使用CI来完成这类任务?他们附带邮件和更多改进的报告。我的投票是http://jenkins-ci.org/ – Jayan 2012-02-08 09:25:21