Ich habe eine Web-App, die ich in der Produktion auf Tomcat laufe. Es verwendet den MySQL-Connector, ist jedoch nicht mit dem Krieg gebündelt, sondern ist im Tomcat-Common-Lib-Verzeichnis enthalten, so dass ich über JNDI auf die Datenquelle zugreifen kann.
Ich würde gerne etwas ähnliches mit Jetty (während der Entwicklung) und genauer Jetty + Maven machen. Gibt es eine Möglichkeit für mich, das mysql-connector-jar in den Klassenpfad einzuschließen, wenn Jetty über Maven läuft (d. H. Es nicht in der WAR-Datei enthalten hat)?
Ich sollte auch beachten, dass ich Maven für meinen Build-Prozess verwende und den mysql-Connector als "bereitgestellten" Bereich angegeben habe.
Zusätzlich zur vorherigen Antwort: Sie müssen zu Ihrem Jetty-Plugin in maven Config-Abhängigkeit hinzufügen:
%Vor%Und dann können Sie den bereitgestellten Bereich in den Hauptprojektabhängigkeiten verwenden. Ich habe es jetzt gemacht und es funktioniert. Danke für deine Frage (und auch Nishant)
Antwort nicht direkt auf Ihre Frage, aber da ich die Portabilität in Webapps liebe, wird mein Krieg das Connector-Jar und einen Verbindungspool enthalten (z. B. den Superduper c3p0). Das bedeutet, dass der Container die Datenbankverbindung für mich nicht mehr verwalten wird, noch verwende ich JNDI, um die Verbindungseigenschaften zu beschreiben. Aber die webapp ist jetzt 100% tragbar und vorhersehbar auf Tomcat, Jetty, Harz, Jboss etc.
Vielleicht könnten Sie Maven .war-Overlays für diesen Zweck verwenden, obwohl ich Ich weiß nicht, ob sie mit anderen Abhängigkeiten arbeiten.
Also im Grunde wäre Ihr Projekt
%Vor% Wo Ihr Original-Krieg-Projekt die mysql-Abhängigkeit als <scope>provided</scope>
hat, aber das new-war-Modul nur ein Pom ist, das ein <packaging>war</packaging>
hat, hängt vom ursprünglichen war (für das Overlay) ab der Kompilierbereich und führt das Jetty-Plugin aus (das Jetty-Plugin aus dem Original-War-Modul entfernen). Wenn das funktioniert, müssen Sie mit den kleinen Unannehmlichkeiten fertig werden, Ihre Entwicklung in einem Modul zu machen, aber unabhängig davon, welche Tests Sie in einem anderen Modul durchführen.