จะดำเนินการเรียกใช้ปลั๊กอิน maven โดยตรงจากบรรทัดคำสั่งได้อย่างไร


98

ฉันมีปลั๊กอิน (antrun) ที่มีการกำหนดค่าการดำเนินการซึ่งมี id และไม่ผูกมัดกับเฟสใด ๆ ฉันสามารถเรียกใช้การดำเนินการนี้โดยตรงจากบรรทัดคำสั่งได้หรือไม่

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

รันด้วยสิ่งที่ต้องการ:

mvn my-execution

หรืออย่างน้อย

mvn magicplugin:execute -DexecutionId=my-execution

คำตอบ:


135

ฟังก์ชันนี้ได้รับการปรับใช้เป็นMNG-5768และมีอยู่ใน Maven 3.3.1

การเปลี่ยนแปลงจะ:

ขยายไวยากรณ์การเรียกใช้ปลั๊กอินโดยตรงเพื่ออนุญาตพารามิเตอร์ @ การดำเนินการ - id ที่เป็นทางเลือกเช่น org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ecutionId

ดังนั้นในกรณีของคุณ:

mvn antrun:run

ใช้default-cliรหัสการดำเนินการและ:

mvn antrun:run@my-execution

ใช้การดำเนินการที่กำหนดค่าไว้ใน pom ของคุณ


2
จาก Artifact ID "maven-antrun-plugin" เราจะรู้ได้อย่างไรว่ามันเป็นแค่ "antrun" ที่ควรใช้mvn antrun:run?
mks-d

1
@ mks-d ดูpluginGroupsว่าทำไมถึงorg.apache.maven.plugins:maven-antrun-pluginเรียกได้ว่าเป็นantrun.
โจ

1
@ Joe ขอบคุณที่ด้านบนของกลุ่มปลั๊กอินยังมีกลไกPlugin Prefix Resolutionอย่างชัดเจน ...
mks-d

55

วิธีที่ตรงที่สุดในการเรียกใช้ปลั๊กอิน maven ของคุณคือการระบุเป้าหมายปลั๊กอินโดยตรงบนบรรทัดคำสั่ง

mvn groupId:artifactId:version:goal

ข้อมูลเพิ่มเติมที่: คู่มือการพัฒนาปลั๊กอิน Maven


1
แต่ฉันจะเรียกใช้การดำเนินการ "default-cli" ได้อย่างไร หากมีการดำเนินการหลายอย่างในข้อกำหนดปลั๊กอิน
Anton Balashov

ฉันกำลังต่อสู้เพื่อให้ปลั๊กอินยูทิลิตี้ Spring Boot Jasypt ทำงานและไม่ว่าด้วยเหตุผลใดก็ตามวิธีเดียวที่ฉันจะทำให้ Maven ได้รับการยอมรับคือทำตามคำแนะนำข้างต้น แค่ระบุเป้าหมายโดยตรง ( mvn jasypt:encrypt ...) ไม่เพียงพอ ขอบคุณ @ dimitri-dewaele
Mike

คำถามที่ถามสำหรับการเรียกใช้การดำเนินการเฉพาะ คำตอบของคุณจะเรียกใช้การดำเนินการทั้งหมดที่กำหนดค่าไว้สำหรับเป้าหมาย
toolforger

15

สิ่งที่คุณกำลังมองหาถูกบันทึกไว้ในDefault + Plugin + Execution + IDsแต่สำหรับความรู้ของฉันในขณะนี้ไม่ได้รับการสนับสนุน อย่างไรก็ตามตามความคิดเห็นของMNG-3401 (อ่านจนจบ):

สำหรับ mojos ที่เรียกใช้โดยตรงจากบรรทัดคำสั่งคุณสามารถจัดหาการกำหนดค่าจาก POM โดยใช้การดำเนินการ: 'default-cli' ดังนี้:

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

สิ่งนี้ควรใช้ได้ใน Maven 2.2.0 และ 3.x

บางทีนี่อาจจะเพียงพอสำหรับคุณ


นั่นไม่ใช่เหตุการณ์คำถามถ้าคำตอบของคุณถูกต้อง;)
Tony Chemit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.