Wie Sie programmgesteuert hinzufügen Ant-Bibliothek-Abhängigkeiten für E-mail-Aufgabe

Habe ich wurde beauftragt mit der Erstellung von automatisierten Benachrichtigungen für unsere Ant-build-Skripts. Dies ist so, dass wenn jemand drückt eine Bereitstellung, kann unser team erhalten Sie automatisch eine E-Mail über Sie.

Die offensichtliche Wahl zu nutzen, um die Ant-task E-mail, die kommt mit vordefinierten 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>

Jedoch diese Ergebnisse in der folgenden runtime-exception:

java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage

Dies ist, weil Ant-task E-mail-hängt davon ab, JavaMail und JavaBeans Activation Framework, Bibliotheken, die offenbar nicht im Lieferumfang der distribution. Warum Ant wäre eine Aufgabe definieren, hing von einer Bibliothek, aber nicht die Bibliothek, ist mir unklar.

Dieses Problem wurde bereits diskutiert über diesen Beitrag: ant-task E-mail mit E-mail und Aktivierungs-jar im externen Speicherort. Anhand der Antworten scheint es zwei Lösungen.

Die erste ist die manuelle setzen diese Bibliothek-Abhängigkeiten auf den ant-classpath. Dies kann durchgeführt werden, indem die -lib command-line-argument, oder in eclipse kann man Window > Preferences > Ant > Runtime > Global Entries, und fügen Sie dann mail.jar und activation.jar (ich bin mir ziemlich sicher, dass dies auf das gleiche hinausläuft wie -lib, korrigiert mich wenn ich falsch Liege). Aber diese Lösung ist nicht wünschenswert für unser team, denn es würde bedeuten, dass jeder von uns manuell führen Sie diese Schritte durch. Ich bin auf der Suche nach einem Weg, um einfach zu Begehen meine Meldung code und es sollte funktionieren auf einer anderen eclipse-Installation nach svn update.

Die andere Lösung in dem verlinkten post erwähnt, ein Weg, um die oben programmgesteuert durch Aufruf von Ant aus sich selbst:

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

Das problem dabei ist, dass die Ant-Kommandozeilen-tool ist anscheinend nur für die vollständige Installation, nicht die eclipse-distribution. Also nochmal es gibt keinen Weg, um es Arbeit ohne irgendeine manuelle Aktion durch die alle wollen, verwenden Sie die E-mail-Aufgabe.

Gibt es eine Möglichkeit, kann ich das automatisieren, ohne Zugabe von anderen lästigen Schritt zu Projekt-setup? Ich verstehe wirklich nicht, warum dies so schwer zu erreichen - es scheint, dass, wenn die E-mail-Aufgabe war nicht vordefiniert Ameise wäre dies einfacher. Hoffentlich bin ich etwas fehlt.

  • Haben Sie sich überlegt mit einem CI für diese Art von Aufgaben? Sie kommt mit den E-mails und viel bessere Berichterstattung. Meine Stimmen für jenkins-ci.org
InformationsquelleAutor Paul Bellora | 2012-02-07
Schreibe einen Kommentar