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
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.
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-plugin
và hibernate3-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
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
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
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
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