Chạy một thực thi plugin Maven duy nhất?


97

Tôi nghĩ rằng tôi là một người dùng Maven có kinh nghiệm, nhưng tôi đang gặp khó khăn về cách thực hiện việc này!

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

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 bộ dữ liệu mẫu khác nhau, vì vậy tôi muốn xác định một vài cách thực thi khác nhau.

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


Câu trả lời:


134

Như đã lưu ý trong Cách thực thi thực thi plugin maven trực tiếp từ dòng lệnh? , chức năng này đã được triển khai dưới dạng MNG-5768 và có sẵn trong Maven 3.3.1.

Sự thay đổi sẽ:

mở rộng cú pháp gọi plugin trực tiếp để cho phép tham số @ execute-id tùy chọn, ví dụ: org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executeId.

Vì vậy, miễn là bạn cung cấp cho việc thực thi của mình một id:

mvn sql:execute@specific-execution-id

sử dụng thực thi được định cấu hình trong pom của bạn.


Điều này thật tuyệt :)
GabrielBB

49

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

Không, không thể . Điều có thể thực hiện được là xác định cấu hình "a" sẽ được sử dụng khi plugin được gọi từ dòng lệnh bằng cách sử dụng default-cliid thực thi "đặc biệt" :

<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 bên dưới để biết chi tiết (từ Ghi chú phát hành Maven 2.2.0 ):

  • MNG-3401 - Bắt đầu từ Maven 2.2.0, các mục tiêu được gọi trực tiếp từ dòng lệnh có thể được cấu hình trong POM riêng biệt với các lệnh gọi plugin khác bằng cách sử dụng một lệnh executionIdgọi đặc biệt default-cli. Nếu trước đây, tất cả các cấu hình cho các mục tiêu dòng lệnh phải đi trong cấu hình cấp plugin, Maven 2.2.0 cho phép các cấu hình dành riêng cho dòng lệnh được tách thành cấu hình riêng <execution>. Để biết thêm thông tin, hãy xem Hướng dẫn về ID thực thi mặc định .

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
Daniel Kaplan

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.