Bagaimana cara menjalankan eksekusi plugin maven langsung dari baris perintah?

95

Saya memiliki plugin (antrun) dengan eksekusi yang dikonfigurasi yang memiliki id dan tidak terikat pada fase apa pun. Dapatkah saya menjalankan eksekusi ini langsung dari baris perintah?

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

Jalankan dengan sesuatu seperti:

mvn my-execution

atau setidaknya

mvn magicplugin:execute -DexecutionId=my-execution
artemb
sumber

Jawaban:

130

Fungsionalitas ini telah diimplementasikan sebagai MNG-5768 , dan tersedia di Maven 3.3.1.

Perubahan tersebut akan:

memperluas sintaks pemanggilan plugin langsung untuk mengizinkan parameter @ execution-id opsional, misalnya, org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: proses @ executionId.

Jadi, dalam kasus Anda:

mvn antrun:run

menggunakan default-cliID eksekusi, dan:

mvn antrun:run@my-execution

menggunakan eksekusi yang dikonfigurasi di pom Anda.

Joe
sumber
1
Dari ID artefak "maven-antrun-plugin" bagaimana kita tahu bahwa hanya "antrun" yang harus digunakan mvn antrun:run?
mks-d
1
@ mks-d lihat pluginGroupsmengapa org.apache.maven.plugins:maven-antrun-pluginbisa disebut sebagai antrun.
Joe
1
@Joe terima kasih, di atas grup plugin tampaknya juga ada mekanisme Resolusi Awalan Plugin ...
mks-d
51

Cara paling langsung untuk menjalankan plugin maven Anda adalah dengan menentukan tujuan plugin secara langsung di baris perintah.

mvn groupId:artifactId:version:goal

Informasi lebih lanjut di: Panduan pengembangan plugin Maven

Dimitri Dewaele
sumber
1
Tapi bagaimana saya bisa menjalankan eksekusi "default-cli"? Jika ada beberapa eksekusi dalam definisi plugin.
Anton Balashov
Saya berjuang untuk menjalankan plugin utilitas Spring Boot Jasypt, dan untuk alasan apa pun, satu-satunya cara agar saya dapat membuatnya dikenali oleh Maven adalah dengan mengikuti saran di atas. Hanya menentukan tujuan secara langsung ( mvn jasypt:encrypt ...) tidaklah cukup. Terima kasih @ dimitri-dewaele.
Mike
15

Apa yang Anda cari ditangkap di Default + Plugin + Eksekusi + ID tetapi sepengetahuan saya saat ini tidak didukung. Namun, menurut komentar MNG-3401 (baca sampai akhir):

untuk mojos yang dipanggil langsung dari baris perintah, Anda dapat menyediakan konfigurasi dari POM menggunakan executionId: 'default-cli' seperti ini:

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

Ini harus bekerja di Maven 2.2.0 dan 3.x.

Mungkin ini cukup untukmu.

Pascal Thivent
sumber
Itu bukan acara pertanyaan jika jawaban Anda benar;).
Tony Chemit