2012-10-01 32 views
8

Khi triển khai một ứng dụng web tôi cần phải cập nhật một số biến trong tài nguyên UI, giải nén một số nội dung và concat một số tệp, hiện tại điều này đạt được thông qua tác vụ kiến. Tôi đang cố gắng chạy nhiệm vụ này trong quá trình xây dựng maven bằng cách sử dụng một cái gì đó như thế này ...Chạy một nhiệm vụ kiến ​​trong giai đoạn xây dựng maven trước khi chiến tranh được đóng gói?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>deploy-ui</id> 
      <phase>prepare-package</phase> 
      <inherited>false</inherited> 
      <configuration> 
       <target> 
        <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" /> 
        <ant antfile="build.xml" target="static-assets" /> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Ở trên không thành công vì các tệp chưa được sao chép vào thư mục đích. Nếu tôi đặt giai đoạn để "gói" nhiệm vụ kiến ​​chạy tốt và tất cả các tập tin được tạo ra/sửa đổi, nhưng nó không giúp đỡ như .war đã được xây dựng trước khi mục tiêu ant được chạy.

Về cơ bản, tôi cần chạy mục tiêu kiến ​​gần cuối giai đoạn chuẩn bị gói.

Đã xem qua mặc dù Lifecycle Reference Tôi không thể tập luyện cách hiển thị Mục tiêu chi tiết hơn cho plugin chống vi-rút.

Bất kỳ ý tưởng nào?

+0

Bạn có nghĩ đến việc thực hiện các tác vụ kiến ​​này bằng cách sử dụng các trình cắm bổ sung "thuần" không? – maba

Trả lời

17

Vì tôi không nhận được bất kỳ câu trả lời nào về nhận xét của mình, tôi đoán bạn muốn tiếp tục sử dụng maven-antrun-plugin.

Từ những gì tôi đã học và trải nghiệm, nếu hai plugin được thực hiện trên cùng một giai đoạn, thì chúng sẽ được thực hiện theo thứ tự được khai báo trong pom.xml.

Để làm việc này, bạn sẽ phải thêm maven-war-plugin vào danh sách <plugins/> sau maven-antrun-plugin.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>deploy-ui</id> 
      <phase>package</phase> 
      <inherited>false</inherited> 
      <configuration> 
       <target> 
        <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" /> 
        <ant antfile="build.xml" target="static-assets" /> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <execution> 
      <!-- First step is to disable the default-war build step. --> 
      <id>default-war</id> 
      <phase>none</phase> 
     </execution> 
     <execution> 
      <!-- Second step is to create an exploded war. Done in prepare-package --> 
      <id>war-exploded</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>exploded</goal> 
      </goals> 
     </execution> 
     <execution> 
      <!-- Last step is to make sure that the war is built in the package phase --> 
      <id>custom-war</id> 
      <phase>package</phase> 
      <goals> 
       <goal>war</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

gia tăng một số hành quyết hơn để các default-war là lần đầu tiên người khuyết tật, sau đó chiến tranh đang bùng nổ và cuối cùng chiến tranh được đóng gói.

+3

đây là một câu trả lời rất hữu ích cho vấn đề của tôi. Tuy nhiên, tôi đã thiết lập một chút khác nhau: phát nổ (chuẩn bị gói) -> sao chép tài nguyên (chuẩn bị gói) -> chiến tranh (gói). Để không ghi đè lên những gì chiến tranh: nổ nhiệm vụ được tạo ra, tôi đã phải trỏ '' vào một thư mục trống cho chiến tranh: thực hiện chiến tranh. – omilke

1

Khi bạn quan sát đây là nơi mà vòng đời không cung cấp mức độ chi tiết cần thiết. Tôi đã trả lời một số similar question cho ai đó trước đó. Đó không phải là câu trả lời chính xác cho câu hỏi của bạn nhưng kỹ thuật có thể áp dụng.

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