Làm thế nào để thực hiện thực thi plugin maven trực tiếp từ dòng lệnh?


93

Tôi có một plugin (antrun) có cấu hình thực thi có id và không bị ràng buộc với bất kỳ giai đoạn nào. Tôi có thể thực hiện lệnh này trực tiếp từ dòng lệnh không?

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>my-execution</id>
      ...
    </execution>
  </executions>
</plugin>

An chạy nó với một cái gì đó như:

mvn my-execution

hoặc ít nhất

mvn magicplugin:execute -DexecutionId=my-execution

Câu trả lời:


128

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, trong trường hợp của bạn:

mvn antrun:run

sử dụng default-cliID thực thi và:

mvn antrun:run@my-execution

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


1
Từ ID tạo tác "maven-antrun-plugin", làm thế nào để chúng tôi biết rằng nó chỉ là "antrun" nên được sử dụng trong mvn antrun:run?
mks-d

1
@ mks-d xem pluginGroupstại sao org.apache.maven.plugins:maven-antrun-plugincó thể được gọi là antrun.
Joe

1
@Joe cảm ơn, trên đầu các nhóm plugin cũng có cơ chế Phân giải tiền tố plugin rõ ràng ...
mks-d

49

Phương tiện trực tiếp nhất để thực thi plugin maven của bạn là chỉ định mục tiêu plugin trực tiếp trên dòng lệnh.

mvn groupId:artifactId:version:goal

Thông tin thêm tại: Hướng dẫn phát triển các plugin Maven


1
Nhưng làm thế nào tôi có thể chạy chính xác thực thi "default-cli"? Nếu có một số lần thực thi trong định nghĩa plugin.
Anton Balashov

Tôi đã cố gắng để có được một plugin tiện ích Spring Boot Jasypt để chạy và vì bất cứ lý do gì, cách duy nhất tôi có thể làm cho nó được Maven công nhận là làm theo lời khuyên ở trên. Chỉ xác định mục tiêu trực tiếp ( mvn jasypt:encrypt ...) là không đủ. Cảm ơn @ dimitri-dewaele.
Mike

15

Những gì bạn đang tìm kiếm được ghi lại trong Mặc định + Plugin + Thực thi + ID nhưng theo hiểu biết của tôi hiện không được hỗ trợ. Tuy nhiên, theo nhận xét của MNG-3401 (đọc chúng cho đến cuối):

đối với mojos được gọi trực tiếp từ dòng lệnh, bạn có thể cung cấp cấu hình từ POM bằng cách sử dụng executeId: 'default-cli' như sau:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
          <descriptorRef>project</descriptorRef>
        </descriptorRefs>
      </configuration>
    </execution>
  </executions>
</plugin>

Điều này sẽ hoạt động trong Maven 2.2.0 và 3.x.

Có lẽ điều này sẽ là đủ cho bạn.


đó không phải là sự kiện câu hỏi chính xác nếu câu trả lời của bạn là đúng;).
Tony Chemit
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.