Jalankan eksekusi plugin Maven tunggal?

98

Saya pikir saya adalah pengguna Maven yang berpengalaman, tetapi saya mengalami hambatan mental tentang cara melakukan ini!

Saya dapat menggunakan plugin Maven sql untuk meletakkan, membuat, dan menginstal skema dalam database melalui eksekusi plugin yang telah saya tentukan dan terikat ke pre-integration-testfase.

Namun, sekarang saya ingin menggunakan plugin sql yang sama untuk memasukkan beberapa data sampel kapan pun saya mau dari baris perintah - yaitu, tidak terikat pada tujuan siklus hidup apa pun. Ada beberapa kumpulan data sampel, jadi saya ingin menentukan beberapa eksekusi yang berbeda.

Tetapi apakah ada cara untuk menjalankan salah satu dari eksekusi ini dari baris perintah dengan menggunakan ID eksekusi mungkin?

HDave
sumber

Jawaban:

137

Seperti disebutkan di Bagaimana cara mengeksekusi eksekusi plugin maven langsung dari baris perintah? , fungsi 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, selama Anda memberikan eksekusi Anda sebuah id:

mvn sql:execute@specific-execution-id

menggunakan eksekusi yang dikonfigurasi di pom Anda.

Joe
sumber
Ini bagus :)
GabrielBB
49

Tetapi apakah ada cara untuk menjalankan salah satu dari eksekusi ini dari baris perintah dengan menggunakan ID eksekusi mungkin?

Tidak, tidak mungkin . Apa yang mungkin adalah untuk mendefinisikan konfigurasi "a" yang akan digunakan ketika plugin dipanggil dari baris perintah menggunakan default-cliid eksekusi "khusus" :

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

Dan telepon saja mvn sql:execute.

Lihat di bawah untuk detailnya (dari Catatan Rilis Maven 2.2.0 ):

  • MNG-3401 - Mulai tahun Maven 2.2.0, gol dipanggil langsung dari baris perintah dapat dikonfigurasi dalam POM secara terpisah dari doa Plugin lain menggunakan khusus executionIdyang disebut default-cli. Jika sebelumnya, semua konfigurasi untuk tujuan baris perintah harus masuk dalam konfigurasi tingkat plugin, Maven 2.2.0 memungkinkan konfigurasi khusus baris perintah dipisahkan menjadi miliknya sendiri <execution>. Untuk informasi lebih lanjut, lihat Panduan untuk ID Eksekusi Default .
Pascal Thivent
sumber
1
Saya yakin Anda dapat mencapai apa yang Anda inginkan dengan menggunakan dua profil berbeda
Daniel Kaplan
4
Jawaban ini sekarang sudah usang dengan versi Maven saat ini. Lihat jawaban yang diberikan oleh
@Joe