задание ant mail с использованием почты и jar активации во внешнем местоположении - PullRequest
3 голосов
/ 29 ноября 2011

У меня есть следующее задание 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>

И у меня в папке проекта lib есть и активация, и почтовый jar.Я хочу иметь возможность отправлять почту без необходимости хранить эти банки в месте загрузки муравьев.Можно ли сообщить муравью о моей папке "lib", чтобы увидеть javaxmail и файлы активации.Например, если бы я мог указать путь к классу с помощью в этой цели.

Прямо сейчас, когда я выполняю эту цель, я всегда сталкиваюсь с исключением -

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

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

См. этот ответ на аналогичный вопрос для решения библиотечных зависимостей в ant.

Короче говоря, поместите все свои библиотеки расширений ant, например mail.jar, активации.jar, общие ресурсы в специальную папку и сделайте их доступными для всех ваших сценариев ant с помощью ANT_ARGS.
Быть вынужденным использовать задачу exec в ant для разрешения зависимости библиотеки кажется ОЧЕНЬ странным.

В Eclipse обычной практикой является создание модуля в вашем хранилище (cvs, subversion, git).Затем каждый член команды имеет этот модуль в своем рабочем пространстве и просто использует Window > Preferences > Ant > Runtime > Global Entries, чтобы сделать эти зависимости доступными для ant.

3 голосов
/ 29 ноября 2011

К сожалению, вы не можете. Вы должны как-то поместить Зависимости библиотеки в путь к муравьям.

Это может быть каталог 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, вы можете добавить библиотеки в определение запуска задачи и поделиться этим определением запуска с другими разработчиками.

0 голосов
/ 06 ноября 2012

Есть хороший подход, на который уже дан ответ .Это решает эту проблему с помощью Ant Tasks Classloader :

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...