2014-04-25 22 views
6

Tôi hiện đang làm việc trên một dự án hiện trong đó có một tập tin pom.xml như sau:Làm thế nào để sao chép tài nguyên vào thư mục đích src với Maven?

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
     </includes> 
    </resource> 
</resources> 

tôi có trong đường cơ sở một thư mục gọi là thuộc tính có chứa các file tài sản. Tôi muốn sao chép khi đóng gói tất cả các tập tin thuộc tính có chứa thuộc tính/trong thư mục src của tôi (nếu không chương trình sẽ sụp đổ do thiếu tập tin cấu hình).

Vì vậy, câu hỏi của tôi là:

Làm thế nào tôi có thể, với Maven bao gồm các tệp tài nguyên không nằm trong thư mục src?

tôi cố này nhưng nó dường như không làm việc:

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
      <include>../properties/**</include> 
     </includes> 
    </resource> 
</resources> 

Thank của bạn đã giúp đỡ.

Trả lời

13

Nếu cấu trúc tập tin của bạn là như thế này: Standard Directory Layout

enter image description here

Sau đó, bạn không cần phải thêm elemt nguồn lực. Bản sao Maven theo mặc định tất cả các tệp và thư mục nằm trong thư mục/src/main/resources của bạn vào thư mục xây dựng và định vị chúng trong thư mục gốc của tệp lớp đường dẫn đã biên dịch của bạn.
nếu bạn có ví dụ như một tập tin gọi là configuration.properties nằm ở /src/main/resources/configuration.properties sau đó khi chạy mvn clean compile tập tin này sẽ được sao chép vào /target/classes/configuration.properties bạn Vì vậy, nếu bạn loại bỏ một phần các tập tin sẽ được đặt nơi u muốn họ

<resource> 
    <filtering>false</filtering> 
    <directory>src</directory> 
    <includes> 
     <include>**/*.properties</include> 
    </includes> 
</resource> 
+0

cảm ơn bạn đã trả lời nhanh, vấn đề là dự án khá cũ (trước khi bị quạ) nên không tuân theo bố cục thư mục chuẩn. Câu trả lời của bạn rất hữu ích, tôi chỉ cần thêm thư mục thuộc tính của tôi làm thư mục tài nguyên. – stankoua

+0

Không. Tốt nhất là thay đổi cấu trúc thư mục và tuân theo các quy ước giúp cuộc sống của bạn dễ dàng hơn. – khmarbaise

+0

Vui vì tôi có thể giúp đỡ. Như khmarbaise nó làm cho cuộc sống của bạn dễ dàng hơn để làm theo các tiêu chuẩn convetion. Làm cho cuộc sống dễ dàng hơn cho bạn và mọi người khác sử dụng dự án này :) – zpontikas

6

Bằng cách di chuyển các dự án từ ant sang maven mà không thay đổi cấu trúc dự án, hãy thiết lập sourceDirectory testSourceDirectory của bạn trong việc xây dựng và sử dụng plugin maven-resource như folowing cẩn thận trong giai đoạn bạn thực hiện các mục tiêu.

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>copy-resources01</id> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/src</directory> 
           <includes> 
            <include>**/*.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
       <execution> 
        <id>copy-resources02</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/build/lib</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/target/</directory> 
           <include>*.jar</include> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

Thx để trả lời, tôi sẽ cung cấp cho nó một thử nếu zpontikas đã không cho tôi một giải pháp. – stankoua

+1

vì vậy những gì đang xảy ra ở đây: 1. thực thi với bản sao id resources01 sao chép tất cả các tệp *property tìm trong bản sao $ {basedir}/src trong thư mục $ {basedir}/target/classes trong cùng một gói như trong họ là src. 2.thực hiện với tài nguyên bản sao id02 sẽ đặt kết quả *.tệp jar trong $ {basedir}/build/lib, đây là nơi mà dự án kiến ​​allready đặt kết quả previouse. Tôi biết một chút khó khăn, cuối cùng bạn cần xóa bởi mvn clean the build/lib. Lệnh: mvn cài đặt bạn sử dụng to – aberes

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