2011-09-08 33 views
9

Tôi đang chuyển đổi dự án webapp của Ant sang Maven. Tôi có hầu hết nó làm việc, nhưng tôi đang cố gắng tìm cách sao chép một số tập tin tài nguyên từ các nguồn khác nhau dựa trên hồ sơ.Maven: bao gồm tệp tài nguyên dựa trên tiểu sử

Tôi có src/main/resources/persistence-{dev, prod}.xml. Một trong những điều này cần được bao gồm trong tệp chiến tranh là WEB-INF/classes/META-INF/persistence.xml.

Tôi muốn sao chép phiên bản dev khi hồ sơ nhà phát triển đang hoạt động và phiên bản sản phẩm khi sản phẩm đang hoạt động.

+1

Tôi không nghĩ rằng các plugin tài nguyên maven giải quyết vấn đề của mình bởi vì theo tôi biết plugin này chỉ có thể bao gồm hoặc loại trừ các tệp, không sao chép và đổi tên chúng. – allaf

Trả lời

8

Chỉ cần sử dụng plugin tài nguyên của maven như vậy http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html và có thuộc tính cho tên tệp hoặc tiện ích được đặt trong cấu hình.

+4

Câu trả lời của bạn không bao gồm việc đổi tên tệp persistence.xml. – mwalter

+5

Thay vì có tên tệp nguồn khác nhau, bạn có thể có các thư mục khác nhau nơi bạn tải tài nguyên và có thuộc tính đó để bạn không phải đổi tên tệp. –

+0

@ManfredMoser - Tôi nghĩ sử dụng thuộc tính tùy chỉnh trong một 'persistence .xml' là cách thích hợp. – JimHawkins

6

Nếu bạn không kết hợp với mô hình có 3 tệp persistence.xml riêng biệt và sao chép một hoặc một lựa chọn khác, bạn có thể sử dụng hồ sơ maven với bộ lọc như thế này (chỉ cần thực hiện ngày này và ngày hôm nay đã xem qua bài đăng của bạn):

Trong persistence.xml:

<property name="hibernate.show_sql" value="${hibernate.debug}" /> 
<property name="hibernate.format_sql" value="${hibernate.debug}" /> 

Trong pom.xml tạo một hồ sơ và xác định các biến:

<profiles> 
    <profile> 
    <id>hib-debug</id> 
    <properties> 
     <hibernate.debug>true</hibernate.debug> 
    </properties> 
    </profile> 
</profiles> 

định nghĩa một defaul t cho khi bạn xây dựng mà không chỉ định một cấu hình:

<properties> 
    <hibernate.debug>false</hibernate.debug> 
</properties> 

và .... chắc chắn rằng bạn bật lọc nguồn:

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

Sau đó, bạn xây dựng với mvn -Phib-debug và thì đấy! Thay thế được thực hiện.

Các vấn đề liên quan