2010-09-23 37 views
71

Tôi nghĩ rằng tôi là một người dùng Maven có kinh nghiệm, nhưng tôi đang có một khối tâm thần về cách làm điều này!Chạy một thực thi plugin Maven đơn lẻ?

Tôi đã có thể sử dụng plugin sql Maven để thả, tạo và cài đặt lược đồ trong cơ sở dữ liệu thông qua các lệnh thực thi plugin mà tôi đã xác định và ràng buộc với giai đoạn pre-integration-test.

Tuy nhiên, bây giờ tôi muốn sử dụng cùng một plugin sql để chèn một số dữ liệu mẫu bất cứ khi nào tôi muốn từ dòng lệnh - nghĩa là, không bị ràng buộc với bất kỳ mục tiêu vòng đời nào. Có một vài tập dữ liệu mẫu khác nhau, vì vậy tôi muốn xác định một số thực thi khác nhau.

Nhưng có cách nào để chạy một trong các lệnh này từ dòng lệnh bằng cách sử dụng ID thực thi không?

+0

có thể trùng lặp của [Làm thế nào để thực thi lệnh maven plugin trực tiếp từ dòng lệnh?] (Http://stackoverflow.com/questions/3166538/how-to-execute-maven-plugin-execution-directly-from-command- line) – Joe

Trả lời

85

Như đã nêu trong How to execute maven plugin execution directly from command line?, chức năng này đã được implemented như MNG-5768, và có sẵn trong Maven 3.3.1.

Sự thay đổi sẽ:

mở rộng cắm trực tiếp gọi cú pháp để cho phép tùy chọn @ thi-id tham số, ví dụ, org.apache.maven.plugins: maven-xa-nguồn-plugin: 1.0: Quá trình @ executionId.

Vì vậy, miễn là bạn đưa ra thực hiện của bạn một id:

mvn sql:[email protected] 

sử dụng thực hiện cấu hình trong pom của bạn.

46

Nhưng có cách nào để chạy một trong các lệnh này từ dòng lệnh bằng cách sử dụng ID thực thi không?

Không, not possible. Những gì có thể mặc dù là xác định "a" cấu hình được sử dụng khi các plugin được gọi từ dòng lệnh bằng cách sử dụng "đặc biệt" default-cli thi id:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sql-maven-plugin</artifactId> 
    <version>1.4</version> 
    ... 
    <executions> 
    <execution> 
     <id>default-cli</id> 
     <configuration> 
     ... 
     </configuration> 
    </execution> 
    ... 
    </executions> 
</plugin> 

Và chỉ cần gọi mvn sql:execute.

Xem dưới đây để biết chi tiết (từ Maven 2.2.0 Release Notes):

  • MNG-3401 - Bắt đầu từ năm Maven 2.2.0, mục tiêu gọi trực tiếp từ dòng lệnh có thể được cấu hình trong POM riêng từ plugin khác các lời gọi sử dụng số executionId đặc biệt được gọi là default-cli. Trước đây, tất cả cấu hình cho mục tiêu dòng lệnh phải đi theo cấu hình cấp plugin , Maven 2.2.0 cho phép cấu hình dòng lệnh cụ thể được tách thành riêng <execution>. Để biết thêm thông tin, hãy xem Guide to Default Execution IDs.
+1

Tôi đặt cược bạn có thể đạt được những gì bạn muốn bằng cách sử dụng hai cấu hình khác nhau –

+4

Câu trả lời này hiện đã lỗi thời với các phiên bản hiện tại của Maven. Xem câu trả lời được cung cấp bởi @Joe – Noremac

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