Nel mio progetto, abbiamo creato un modulo Maven per ottenere lo specifico JBoss AS e scompattato.
Quindi tutti i casi di test possono essere eseguiti con questo Jboss AS come contenitore incorporato.
Usiamo jboss-ejb3-embedded-standalone per chiamare il contenitore incorporato, tuttavia trova solo JBOSS_HOME dalle variabili di ambiente e usa quello da eseguire. Quindi dobbiamo aggiornare JBOSS_HOME per mvn install.Come posso impostare una variabile di ambiente in Maven per corsa?
Ho provato a fare questo in Maven per introdurre exec-maven-plugin come di seguito:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>env</executable>
<environmentVariables>
<JBOSS_HOME>
C:/Sample/embedded-container/jboss-${version.org.jboss.jbossas}
</JBOSS_HOME>
</environmentVariables>
</configuration>
<executions>
<execution>
<id>resetJbossHome</id>
<phase>integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
Nell'output di console, posso vedere
[INFO] --- exec-maven-plugin:1.2.1:exec (resetJbossHome) @ test-embedded ---
....
JBOSS_HOME=C:/Sample/embedded-container/jboss-6.1.0.Final
....
Ma quando si avvia JBOSS, è ancora in esecuzione quello con origine JBOSS_HOME impostato.
Inoltre, ho provato a utilizzare anche il plugin maven-antrun.
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copyRelease</id>
<phase>pre-integration-test</phase>
<configuration>
<tasks>
<exec executable="env">
<env key="JBOSS_HOME" value="C:/Sample/embedded-container/jboss-${version.org.jboss.jbossas}"/>
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Si verifica lo stesso.
Mi sbaglio sulla configurazione o ci sono dei modi migliori?
In realtà, il vero problema è dopo aver impostato la environmentVariables, non ha effetto quando si avvia JBoss AS, indipendentemente da ciò che si imposta. :( – Edison
JBoss è stato rilasciato in un processo separato? Forse questo processo eredita dall'env di base e non dall'env del processo di avvio? –
Nel mio progetto, il test JUnit viene avviato da maven-failsafe-plugin e nel test il caso stesso invocherà il metodo createEJBContainer implementato da jboss-ejb3-embedded-jar autonomo, che lancerà il jboss come contenitore. – Edison