Frage

Hintergrund: Ich habe die Einrichtung einen Funktionstest Modul in einem Maven-Projekt auf. Wir verwenden die Maven-Anlegesteg-Plugin zum Testen.

Ich habe die Anlegestelle Plugin einrichten bekam wie hier beschrieben (zum Spiel schön mit der Failsafe-Plugin), aber was ich möchte den Krieg Artefakt zu tun, von unserem Haupt Web-Modul ist zu implementieren Anlegesteg mit (die das Funktionstestmodul läuft durch die Zeit in der lokalen maven Repo gerade installiert wurde.)

Die run-Kriegsziel ein <webApp> Element aufweist, das dauert ein String Pfad zu einem Krieg einzusetzen. Ich würde viel lieber den Krieg gibt von unserem Web-Modul definiert unter Verwendung der Maven-Koordinaten zu implementieren. Gibt es eine Möglichkeit, dies zu tun?

Mögliche Lösungen:

  1. Abschnitt 4.13 von „Better mit Maven Builds“ Fracht beschreibt die Verwendung eines Krieges zu implementieren angegebenen maven Koordinaten, aber das ist ernst Overkill da wir mit Anlegesteg sind.
  2. vernünftiger IMO Abhängigkeit verwendet: Kopieren Sie die soeben eingebauten und installierten Krieg Artefakt auf einen festen Weg in die Funktionstests des Moduls Zielverzeichnis zu kopieren, die ich dann in der Mole Plugins <webApp> Konfigurationselement zur Verfügung stellen kann.
War es hilfreich?

Lösung

  

Die Lauf Krieg Ziel der Anlegesteg-Plugin hat ein Element, das einen String Pfad zu einem Krieg zu implementierende nimmt. Ich würde viel lieber den Krieg gibt von unserem Web-Modul definiert unter Verwendung der Maven-Koordinaten zu implementieren. Gibt es eine Möglichkeit, dies zu tun?

Das ist nicht wirklich das Maven Jetty Plugin soll verwendet werden, setzt das Plugin den Krieg des aktuellen Moduls, was Sie tun möchten, ist standardmäßig nicht unterstützt.

  

Abschnitt 4.13 von „Better Baut mit Maven“ beschreibt Ladung mit einem Krieg zu implementieren angegebenen maven Koordinaten,

Ja, Fracht kann dies tun, in einer sauberen Art und Weise.

  

, aber das ist ernst Overkill gegeben, dass wir Anlegestelle verwenden.

Ich bin nicht einverstanden. Erstens führt die Anlegestelle Plugin nicht unterstützen, was Sie aus dem Kasten heraus tun wollen (so ist es nicht das richtige Werkzeug sein kann). Zweitens ernst Overkill ist stark übertrieben, ein Missverständnis eigentlich, zumal die Ladung sehr wenig Konfiguration erfordert (Null?) Für eine eingebettete Jetty.

  

Weitere vernünftige IMO Abhängigkeit verwendet: Kopieren Sie die soeben eingebauten und installierten Krieg Artefakt auf einen festen Weg in die Funktionstests des Moduls Zielverzeichnis kopieren

Nichts für ungut, aber Ihre ganze Frage klingt ein bisschen wie: Ich habe ein Hammer, es war in Ordnung für einen Nagel, kann ich es verwenden für eine Schraube gegeben, dass ein Schraubenzieher immer eine ernsthafte Overkill scheint Um diese Frage zu beantworten (was irgendwie ist das, was Sie sagen), können Sie dependency:copy verwenden und das ganze Arbeiten mit dem maven jetty Plugin bekommen, aber das ist ein Hack (und da Sie fragen eigentlich keine Frage, ich denke, Sie wollten eine Meinung zu diesem Thema). Natürlich gehört die endgültige Entscheidung zu Ihnen:)

Nur für den Fall, hier ist, wie ich das mit Fracht implementieren würde:

<dependencies>
  <dependency>
    <groupId>war group id</groupId>
    <artifactId>war artifact id</artifactId>
    <type>war</type>
    <version>war version</version>
  </dependency>
  ...
</dependencies>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <configuration>
        <!-- Container configuration -->
        <container>
          <containerId>jetty6x</containerId>
          <type>embedded</type>
        </container>
        <!-- Configuration to use with the container or the deployer -->
        <configuration>
          <deployables>
            <deployable>
              <groupId>war group id</groupId>
              <artifactId>war artifact id</artifactId>
              <type>war</type>
              <properties>
                <context>war context</context>
              </properties>
            </deployable>
          </deployables>
        </configuration>
        <!-- Don't wait, execute the tests after the container is started -->
        <wait>false</wait>
      </configuration>
      <executions>
        <execution>
          <id>start-container</id>
          <phase>pre-integration-test</phase>
          <goals>
            <goal>start</goal>
          </goals>
        </execution>
        <execution>
          <id>stop-container</id>
          <phase>post-integration-test</phase>
          <goals>
            <goal>stop</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

Und ich glaube nicht, dass dies als eine „ernste overkill“ objektiv qualifiziert werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top