2011-02-08 45 views
15

Chính sách của chúng tôi là chỉ xây dựng 1 chiếc bình có thể triển khai. tất cả các cấu hình theo môi trường cụ thể được giữ riêng biệt và chúng tôi cùng nhau tạo tất cả cùng một lúc. vì vậy theo quy trình Ant hiện tại của chúng tôi, chúng tôi có một tệp thuộc tính cho mỗi môi trường, lặp lại chúng và tạo một tập hợp các tệp cấu hình cho từng môi trường.Maven Xây dựng nhiều cấu hình trong một lần

Trong POM XML hiện tại của tôi, tôi chỉ có thể xây dựng một cấu hình được cung cấp tại dòng lệnh. Có thể đạt được thông qua Maven không?

Dưới đây là một số các phần có liên quan của pom.xml

<!-- Define profiles here and make DEV as default profile --> 
<profiles> 

    <!-- dev Profile --> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 

    <!-- qa Profile --> 
    <profile> 
     <id>qa</id> 
     <properties> 
      <env>qa</env> 
     </properties> 
    </profile> 

    <!-- prod Profile --> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <env>prod</env> 
     </properties> 
    </profile> 

</profiles> 
... 


<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.3</version> 

    <executions> 
     <execution> 

      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 

      <configuration> 

       <filters> 
        <filter>env/${env}.properties</filter> 
       </filters> 

       <outputDirectory>${project.build.directory}/config/${env} 
       </outputDirectory> 
       <resources> 
        <resource> 

         <filtering>true</filtering> 

         <directory>${basedir}/src/main/config/default 
         </directory> 
         <includes> 
          <include>*.xml</include> 
          <include>*.properties</include> 
         </includes> 
        </resource> 

.....

Cảm ơn, Prabhjot

+0

Đây là mô tả cách giải quyết cho việc này: https://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once – stokito

Trả lời

19

Maven không giống như con kiến. Với kiến, về cơ bản bạn có thể làm những gì bạn muốn khi bạn muốn làm điều đó. Với maven, có một tài liệu rõ ràng và được ghi lại build life cycle và được nhắm mục tiêu vào việc xây dựng một thành phần (và có thể gắn các tạo tác khác vào bản dựng).

Tuy nhiên, điều bạn dự định làm là tạo một thành phần nhiều lần nhưng với các thông số khác nhau. Điều này không phù hợp với vòng đời của maven. Vì vậy, những gì bạn sẽ cần làm là để gây ra một số quá trình bên ngoài để làm lặp lại và gọi maven liên tục với các tham số khác nhau. Một cách cổ điển để thực hiện điều này là sử dụng kịch bản lệnh shell, nhưng bạn cũng có thể sử dụng Maven Invoker để khởi chạy một tiến trình riêng biệt từ ngữ cảnh Java hoặc Maven.

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