Domanda

Background: Sto installando un modulo di test funzionali in un progetto Maven. Usiamo il Maven-molo-plugin per il test.

Ho il plugin pontile istituito come descritto qui (per giocare piacevolmente con il plugin Failsafe), ma quello che mi piacerebbe fare è distribuire l'artefatto guerra dal nostro principale modulo web utilizzando pontile (che è stato appena installato nella repo esperto di locali per il momento il modulo di test funzionale è in esecuzione).

run-guerra obiettivo ha un elemento che prende <webApp> un percorso stringa in una guerra per distribuire. Preferirei mille volte specificare la guerra di distribuire tramite l'esperto di coordinate definito dal nostro modulo web. Esiste un modo per fare questo?

Le soluzioni possibili:

  1. Sezione 4.13 di "Meglio Builds con Maven" descrive l'uso di carico per distribuire una guerra specificato utilizzando le coordinate Maven, ma questo è grave eccessivo dato che stiamo usando pontile.
  2. Più ragionevole IMO sta usando la dipendenza:. Copia per copiare l'artefatto guerra giusta-built-and-installato per un percorso fisso nella directory di destinazione del modulo test funzionali, che posso quindi fornire in elemento di configurazione <webApp> del plugin pontile
È stato utile?

Soluzione

  

obiettivo run-guerra del plugin pontile ha un elemento che prende una stringa di percorso a una guerra da distribuire. Preferirei mille volte specificare la guerra di distribuire tramite l'esperto di coordinate definito dal nostro modulo web. Esiste un modo per fare questo?

Questa non è realmente il plugin pontile Maven dovrebbe essere utilizzato, il plugin distribuisce la guerra del modulo corrente, ciò che si vuole fare non è supportato per impostazione predefinita.

  

Sezione 4.13 di "Meglio Builds con Maven" descrive l'uso di carico per distribuire una guerra specificato utilizzando le coordinate Maven,

Sì, Cargo può fare questo in modo pulito.

  

ma questo è grave eccessivo dato che stiamo usando pontile.

Non sono d'accordo. In primo luogo, il plugin pontile non supporta ciò che si vuole fare fuori dalla scatola (in modo che non può essere lo strumento giusto). In secondo luogo, grave eccessivo è molto esagerate, un equivoco in realtà, soprattutto in considerazione che il carico richiede pochissima configurazione (zero?) Per un Jetty embedded.

  

Più ragionevole IMO sta usando la dipendenza: copia per copiare l'artefatto guerra giusta-built-and-installato per un percorso fisso nella directory di destinazione del modulo test funzionali

Senza offesa, ma tutta la vostra domanda suona un po 'come: Ho un martello, che andava bene per un chiodo, posso usarlo per una vite, dato che ottenere un cacciavite sembra un grave eccessivo Per rispondere a questa domanda (che è in qualche modo quello che stai dicendo), è possibile utilizzare dependency:copy e ottenere il tutto a lavorare con il plugin Maven molo, ma questo è un hack (e dal momento che si sta effettivamente non chiedere qualsiasi domanda, credo si voleva un parere su questo). Naturalmente la decisione finale appartiene a voi:)

Nel caso in cui, ecco come avrei perseguire questo obiettivo con Cargo:

<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>

E non credo che questo possa essere oggettivamente qualificato come un "eccessivo seria".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top