2011-11-22 20 views
5

Tôi đang cố gắng thiết lập dự án của mình để sử dụng các tên máy chủ ảo khác nhau tùy thuộc vào môi trường.Jboss-web.xml có thể truy cập vào các thuộc tính không?

Tôi biết tôi có thể tạo thư mục với tệp jboss-web.xml riêng biệt trong mỗi thư mục. Nhưng gần đây tôi đã chuyển dự án này sang maven và muốn tận dụng lợi thế của các hồ sơ. Tôi đã có cơ sở dữ liệu được thiết lập để chúng có thể được cấu hình khác nhau theo cấu hình bằng cách sử dụng các bộ lọc.

JBoss-web.xml:

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

Môi trường tập tin tài sản cụ thể có mục nhập cho:

jbossweb.virtualhost=hostname.domain.com 

tập tin pom xây dựng phần có định nghĩa này

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

Just để có biện pháp tốt, phần hồ sơ có cấu hình này:

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

Tôi thậm chí không chắc chắn nếu những gì tôi đang cố gắng làm là có thể. Khi tôi thử nó, Jboss-web.xml có tên biến trong vị trí lưu trữ ảo và không phải là giá trị.

Tôi có đang sủa nhầm cây không?

Cảm ơn,

Eric

+0

Nó _looks_ như bạn có tất cả các mảnh tại chỗ. Một cách tiếp cận _slightly different_ khác là bao gồm giá trị của 'jbossweb.virtualhost' trong định nghĩa hồ sơ. –

Trả lời

10

Thực ra, tôi đã phát hiện ra một cách để làm điều này:

Các JBoss-web.xml trông như thế này bây giờ:

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

Các tệp thuộc tính trông giống như sau:

jbossweb.virtualhost=hostname 
jbossweb.contextroot=/ 

Sau đó phần pom trông như thế này cho cấu hình maven chiến tranh plugin:

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

Và các bộ lọc được định nghĩa ở trên phần plug-in, nhưng trong phần xây dựng như sau:

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

phần webResources là đủ để cho phép lọc với các thuộc tính maven trên jboss-web.xml. – Donatello

+0

Tôi biết điều này đã được trả lời một vài năm trước đây, vì vậy các phiên bản có thể khác nhau; nhưng tôi đã có thể làm điều này để làm việc trong một dự án khởi động Spring bằng cách loại bỏ phần tử context-root từ jboss-web.xml và xây dựng đã chọn đường dẫn server.context từ tệp application.properties. –