2009-02-04 28 views
33

Tôi phải tạo chiến tranh thử nghiệm và chiến tranh sản xuất, sẽ có một tệp khác nhau log4j.properties trong thư mục WEB-INF. Tôi có những tệp này log4j.properties (thử nghiệm chiến tranh) và dev.log4j.properties (để có sự phát triển sản xuất).Làm thế nào để sao chép tài nguyên hoặc tài nguyên khác trong Maven tùy thuộc vào môi trường đích?

Làm thế nào để sao chép tệp dev.log4j.properties vào log4j.properties tệp cho chiến tranh sản xuất?

Trả lời

54
  • Sử dụng Maven hồ sơ (http://maven.apache.org/guides/introduction/introduction-to-profiles.html)
  • Tạo một "dev" và "sản" hồ sơ, lựa chọn một bộ thay thế các nguồn lực cho mỗi profile. Đặt Dev hoạt động theo mặc định.

    <profiles> 
        <profile> 
         <id>dev</id> 
         <activation> 
          <activeByDefault>true</activeByDefault> 
         </activation> 
         <build> 
          <resources> 
           <resource> 
            <directory>src/main/resources/dev</directory> 
           </resource> 
          </resources> 
         </build> 
        </profile> 
        <profile> 
         <id>prod</id> 
         <build> 
          <resources> 
           <resource> 
            <directory>src/main/resources/prod</directory> 
           </resource> 
          </resources> 
         </build> 
        </profile> 
    </profiles> 
    
  • xây dựng bằng cách sử dụng cấu hình bạn muốn qua: mvn install -Pdev hoặc mvn install -Pprod

+0

Điều này có vẻ thanh lịch hơn những gì tôi đã có trước đây !! –

+2

Rất vui khi được nghe. Maven có vẻ khó khăn, nhưng khi được sử dụng cùng với các dòng thực hành tốt nhất, những người như bạn được nghe nói "đẹp quá!" –

+0

Rất hữu ích. Đối với một phiên bản hơi phức tạp hơn bạn có thể thêm "tài nguyên" thư mục: dev true src/main/nguồn/phổ biến src/main/resou rces/dev

9

Tôi đã giải quyết vấn đề này bằng cách sử dụng plugin maven-resources, nơi tôi tạo thư mục prod có tài nguyên cho môi trường sản xuất và sao chép chúng vào thư mục WEB-INF/classes trong giai đoạn xử lý tài nguyên.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <execution> 
      <id>copy-prod-resources</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>webapp/WEB-INF/classes</outputDirectory> 
       <resources> 
        <resource> 
         <directory>src/main/resources/prod</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
5

Đoạn mã trên không làm việc cho tôi - đã phải thay đổi nó như sau:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>copy-prod-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <!-- this is important --> 
     <overwrite>true</overwrite> 
     <!-- this as well (target/ was missing) --> 
     <outputDirectory>${basedir}/target/classes</outputDirectory> 
     <resources> 
      <resource> 
      <directory>src/main/resources/prod</directory> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
3

Phản hồi cuối cùng đang hoạt động. Nhưng bạn cần phải cung cấp cho các phiên bản để làm cho nó hoạt động.

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
    <execution> 
     <id>copy-prod-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <!-- this is important --> 
     <overwrite>true</overwrite> 
     <!-- target --> 
     <outputDirectory>${basedir}/target/classes</outputDirectory> 
     <resources> 
      <resource> 
      <!-- source --> 
      <directory>src/main/resources/prod</directory> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

Tôi đã thử giải pháp này nhưng bây giờ maven đang thêm một thư mục prod bổ sung vào các lớp. Các thư mục khác của tôi như dev và test cũng được tạo ra. Những gì tôi đang làm sai ở đây? – Gambo

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