2012-02-08 21 views
6

Projemde, özel JBoss AS'yi almak ve paketini açmak için bir Maven modülü oluşturduk.
Daha sonra tüm test senaryoları bu Jboss AS'nin altında gömülü kap olarak çalıştırılabilir.
Yerleşik kapsayıcıyı çağırmak için jboss-ejb3 gömülü-standalone kullanıyoruz, ancak JBOSS_HOME ortam değişkenlerini buluyor ve bunu çalıştırmak için kullanıyoruz. Böylece, mvn yüklemesi için JBOSS_HOME'u güncellememiz gerekiyor. Maven başına çalışma ortam değişkenlerini nasıl ayarlayabilirim?

Ben aşağıda exec-maven-plugin tanıtmak tarafından maven bunu denedi: Ben

[INFO] --- exec-maven-plugin:1.2.1:exec (resetJbossHome) @ test-embedded --- 
.... 
JBOSS_HOME=C:/Sample/embedded-container/jboss-6.1.0.Final 

görebilirsiniz konsolun çıktısında

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

....

Ancak JBOSS'u başlatırken, orijin JBOSS_HOME seti ile çalışıyor. Ayrıca, maven-antrun-plugin kullanmayı da denedim.

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

Aynısı çıkıyor.

Yapılandırmada yanlış mıyım yoksa daha iyi bir yolu var mı?

cevap

7

Maven profiles'a bir bakın.

böyle

<profiles> 
    <profile> 
    <id>test</id> 
    <jboss.home>PATH TO JBOSS TEST INSTANCE</jboss.home> 
    </profile> 
    <profile> 
    <id>prod</id> 
    <jboss.home>PATH TO JBOSS PROD INSTANCE</jboss.home> 
    </profile> 
</profiles> 

olarak Ve exec Eklentinizde Farklı özelliklere sahip, test için bir profil, üretim için bir tane tanımlayabilirsiniz

:

<environmentVariables> 
    <JBOSS_HOME> 
     ${jboss.home} 
    </JBOSS_HOME> 
</environmentVariables> 
+0

Aslında asıl sorun ayarladıktan sonra ise environmentVariables, ne ayarlamış olursanız olun, JBoss AS'yi başlatırken etkili olmaz. :( – Edison

+0

JBoss ayrı bir süreç içinde akıyor mu? Belki bu işlem, temel env'den miras alır ve başlatma işleminizden env değil mi? –

+0

Projemde, JUnit testi, maven-failsafe-plugin tarafından başlatılır ve testte durumda kendisi jboss-ejb3 gömülü-bağımsız kavanoz tarafından jboss başlatılacak createEJBContainer yöntemini çağırmak olacaktır, jboss kapsayıcı olarak başlatacaktır – Edison