Frage

kennt jemand eine Möglichkeit, ein Maven-Ziel zu konfigurieren, um einen Tomcatbediener zu implementieren, nachdem ein Build ausgeführt wird? Ich weiß, dass dies möglich ist, die Maven-tomcat-Plugin verwenden, aber es sieht aus, als ob da dies funktioniert nur für Maven 2, während ich verwende Maven 1.1

Ich versuche zur Zeit Hudson einzurichten, so würde dieser Teil meiner kontinuierlichen intergration Phase sein, die ich hoffe, wird wie folgt ausgeführt werden:

  1. Erstellen Sie alle notwendigen Komponenten
  2. Build Krieg und bereitstellen zu (lokale) Server
  3. Ausführen Selen Tests

Jede Hilfe bei diesem würde sehr geschätzt werden.

Danke.

War es hilfreich?

Lösung 3

Ich habe herausgefunden, dass bester Weg, dies zu tun - es ist eigentlich ziemlich einfach, ein Maven Ziel zu schreiben, um den Krieg zu übertragen. Das Ziel geschrieben werden kann wie folgt:

<goal name="deployWar" prereqs="buildWar">

    <echo message="+---------------------------------------------------+" />
    <echo message="installing war file to server" />
    <echo message="+---------------------------------------------------+" />

    <j:set var="deploy.dir" value="${server}/webapps" />

    <copy file="${maven.build.dir}/${pom.artifactId}.war"
        todir="${deploy.dir}" overwrite="true" />
</goal>

Der Server Variable kann in Ihrer project.properties Datei bestimmt werden. sollten Sie auch festlegen, dass eine Voraussetzung, den Krieg zu bauen, bevor Sie versuchen, es zu implementieren. Hoffe, das hilft jemand!

Andere Tipps

Ehrlich gesagt würde ich Ihr Projekt Refactoring Maven 2 zu verwenden, gibt es mehrere Führungen, die einfache Migration Schmerzen helfen kann (google maven 2 Migration ), und es gibt sogar die Maven-one-Plugin Ihre project.xml zu konvertieren oder verpacken Ihre Maven 1 Plugins für Maven 2.

Wenn Sie das nicht können, können Sie die Maven 1 ant-Plugin den Krieg zu Tomcats webapps Verzeichnis zu kopieren, nachdem es verpackt wurde. Tomcat wird den neuen Krieg erkennen und sollte heißen implementierende es.

Ich muss zugeben, ich weiß nicht viel über das Plugin für Maven, aber ich habe alles in einem einfachen Skript, das die Arbeitsverzeichnisse als auch (weiß nicht, ob das Maven Plugin die Arbeitsverzeichnisse reinigt) reinigt.

CALL mvn clean install
CALL rm C:\apps\tomcat\webapps\Foo.war 
CALL rm -rdf C:\apps\tomcat\webapps\foo
CALL rm -rdf C:\apps\tomcat\work\Catalina
CALL copy C:\webapps\workspace\Foo\target\Foo.war C:\apps\tomcat\webapps\Foo.war /y

(Ich weiß, -1 für MS-Scripting)

Der Punkt ist, Sie in der Regel das Arbeitsverzeichnis und das Verzeichnis webapps und die Maven 1 ant-Plugin reinigen wollen dies nicht tun (soweit ich weiß, ob und von dem darin enthaltenen Link lesen). Tomcat „soll“ die Klassendateien in diesen Verzeichnissen erstellen, wenn es den Krieg Datei explodiert, aber jeder, der mit ihm lange genug kennt gearbeitet hat. Das ist nicht immer der Fall

Wenn daher das Plugin nicht diese Verzeichnisse nicht sauber, es ist nutzlos, soweit ich betroffen bin. Schreiben Sie sich eine billige kleine Skript wie das zur Verfügung gestellt. Es dauert 2 Minuten.

webappDirectory kann für Maven-Krieg-Plugin konfiguriert werden, um explodierte Krieg einzusetzen. Nichts Besonderes benötigt wird, nur laufen Maven installieren.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
    <webappDirectory>path/to/server/deploy/dir</webappDirectory>
</configuration>
</plugin>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top