2012-10-10 34 views
13

Cho đến bây giờ, tôi đang sử dụng lệnh mvn clean compile hibernate3:hbm2java để khởi chạy chương trình của mình. Có cách nào để kết hợp ba mục tiêu đó trong một mục tiêu duy nhất, ví dụ: mvn run hoặc mvn myapp:run?Kết hợp nhiều mục tiêu Maven trong một đơn

Trả lời

16

Một giải pháp mà khác hoàn toàn từ câu trả lời khác của tôi là sử dụng exec-maven-plugin với mục tiêu exec:exec.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <executable>mvn</executable> 
       <arguments> 
        <argument>clean</argument> 
        <argument>compile</argument> 
        <argument>hibernate3:hbm2java</argument> 
       </arguments> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Và sau đó bạn chỉ cần chạy nó như thế này:

mvn exec:exec 

Bằng cách làm nó theo cách này bạn không thay đổi bất kỳ plugin khác và nó không bị ràng buộc với bất kỳ giai đoạn hai.

+0

Tôi muốn có cùng, và tôi đã thực sự thực sự suy nghĩ để đưa trở lại vị trí một makefile. Nhưng tôi nghĩ .. nên có một giải pháp maven .. vì vậy bạn đang nói thực sự rằng nó không phải là có ?? Như, exec, nếu tôi nhận được nó ngay từ tên và thực tế là có sẽ "exec"! .. do đó, không thực sự dễ dàng để quản lý các bước, phụ thuộc và mã trả lại .. Có thực sự là trường hợp với maven? Tôi không thể chuỗi các mục tiêu? Tôi có nghĩa là với một chút kiểm soát? – mariotti

+0

Chỉ cần googled nó một lần nữa và tìm thấy tài liệu năm 2005 này: http://docs.codehaus.org/display/MAVEN/Multiple+Goal+Declaration – mariotti

+0

Chính xác giải pháp tôi đang tìm kiếm! Lưu ý: Phiên bản 1.5.0 bị hỏng trên cửa sổ. Xem - https://github.com/mojohaus/exec-maven-plugin/issues/42 Vì vậy, tránh điều đó nếu bạn muốn sử dụng nó ở đó. Sử dụng phiên bản trước 1.4.0 hoặc phiên bản cập nhật> 1.5.0 khi chúng phát hành – codewing

5

Theo trang web Hibernate3 Maven Plugin, mục tiêu hbm2java gắn với pha generate-sources theo mặc định.

Và thông thường bạn sẽ không phải làm sạch dự án, bạn chạy các bản dựng tăng dần.

Dù sao nếu bạn thêm maven-clean-pluginhibernate3-maven-plugin vào pom.xml, bạn sẽ có tất cả trong một lệnh.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>auto-clean</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>hibernate3-maven-plugin</artifactId> 
      <version>2.2</version> 
      <executions> 
       <execution> 
        <id>hbm2java</id> 
        <goals> 
         <goal>hbm2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Nếu bạn muốn hibernate3-maven-plugin được chạy sau khi compile sau đó chỉ cần đặt mục tiêu thành compile vì nó sẽ luôn luôn chạy sau khi giai đoạn mặc định.

Vì vậy, để chạy tất cả các mục tiêu của mình với một lệnh chỉ cần chạy:

mvn compile 

Và nếu bạn cho bất cứ lý do không muốn để làm sạch sau đó chỉ cần gõ:

mvn compile -Dclean.skip 
+0

Và nếu bạn không muốn nó luôn chạy 'hbm2java', hãy đặt plugin đó (và có thể là plugin' clean') bên trong một [profile] (http://www.sonatype.com/books/mvnref- book/reference/profiles-sect-what.html), tức là 'mvn compile -Phbm' – noahlz

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