2011-11-22 20 views
5

Próbuję skonfigurować mój projekt do używania różnych nazw hostów wirtualnych w zależności od środowiska.Czy jboss-web.xml ma dostęp do właściwości?

Wiem, że mogę tworzyć katalogi z oddzielnym plikiem jboss-web.xml w każdym katalogu. Ale ostatnio przeniosłem ten projekt do maven i chciałem skorzystać z profili. Mam już skonfigurowane bazy danych, aby mogły być inaczej konfigurowane przez profil za pomocą filtrów.

jboss-web.xml:

<jboss-web> 
    <context-root>/</context-root> 
    <virtual-host>${jbossweb.virtualhost}</virtual-host> 
</jboss-web> 

Środowisko plik specyficzna właściwość ma wpis:

jbossweb.virtualhost=hostname.domain.com 

odcinek kompilacji pom ma tę definicję

<filters> 
     <filter>src/main/filters/filter-${env}.properties</filter> 
    </filters> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
     <resource> 
      <directory>src/main/webapp/WEB-INF</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 

Wystarczy na dobrą sprawę sekcja profili ma tę konfigurację:

<profile> 
    <id>dev</id> 
    <properties> 
     <env>dev</env> 
    </properties> 
    </profile> 

Nie jestem nawet pewien, czy to, co próbuję zrobić, jest możliwe. Kiedy próbuję, Jboss-web.xml ma nazwę zmiennej w lokalizacji wirtualnego hosta, a nie wartość.

Czy szczerzę złe drzewo?

Dzięki

Eric

+0

It _looks_ jak masz wszystkie kawałki na miejscu. Innym podejściem o nieco innym znaczeniu jest uwzględnienie wartości 'jbossweb.virtualhost' w definicji profilu. –

Odpowiedz

10

Faktycznie, odkryłem sposób, aby to zrobić:

JBoss-web.xml wygląda to teraz:

<jboss-web> 
    <context-root>${jbossweb.contextroot}</context-root> 
    <virtual-host>${jbossweb.virtualhost}</virtual-host> 
</jboss-web> 

Plik właściwości wygląda następująco:

jbossweb.virtualhost=hostname 
jbossweb.contextroot=/ 

Następnie sekcja pom wygląda to dla konfiguracji Maven plugin War:

   <webResources> 
        <resource> 
         <directory>src/main/webapp/WEB-INF</directory> 
         <filtering>true</filtering> 
         <include>jboss-web.xml</include> 
         <targetPath>/WEB-INF</targetPath> 
        </resource> 
       </webResources> 

a filtry są zdefiniowane powyżej sekcji wtyczek, ale w sekcji budowlanej następująco:

<filters> 
     <filter>src/main/filters/filter-${env}.properties</filter> 
    </filters> 
+2

sekcja webResources jest wystarczająca do włączenia filtrowania z właściwościami maven na jboss-web.xml. – Donatello

+0

Wiem, że odpowiedź została udzielona kilka lat temu, więc wersje mogą być inne; ale udało mi się uruchomić to w projekcie Spring Boot, usuwając element context-root z jboss-web.xml, a kompilacja pobrała ścieżkę server.context z pliku application.properties. –