كيف يمكنني تشغيل هدف محدد بتكوين معين في مكون إضافي Maven عندما يكون لدي عدة تكوينات لهذا الهدف

StackOverflow https://stackoverflow.com/questions/3448648

سؤال

انظر المكون الإضافي من pom.xml أدناه.

أستطيع أن أفعل:

mvn myplugin:myGoal

الذي يدير MyGoal (كلا الإعدامين أفترض) ، لكنني أريد أن أكون قادرًا على اختيار عمليات الإعدام الأولى أو الثانية بشكل مستقل.

أعلم أنه يمكنني إضافة معرف إلى عنصر التنفيذ ، ولكن كيف أشير إلى هذا المعرف على سطر الأوامر. أرغب في الوصول إلى شيء يفعل ما يفعله هذا الأمر المتخيل:

mvn myplugin:myGoal --executionId=1

هل هذا ممكن ، أم أنني سأذهب إلى هذا بالطريقة الخاطئة؟

        <plugin>
            <groupId>org.myplugin</groupId>
            <artifactId>myplugin-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>cats</myParam>
                    </configuration>
                </execution>
                <execution>
                    <goals>
                        <goal>myGoal</goal>
                    </goals>
                    <configuration>
                        <myParam>dogs</myParam>
                    </configuration>
                </execution>
            </executions>
        </plugin>
هل كانت مفيدة؟

المحلول

أستطيع أن أفعل mvn myplugin:myGoalWhich يدير MyGoal (كلا الإعدامين أفترض)

لا أحد منهم (على افتراض أن لديهم فريدة من نوعها id). عمليات الإعدام مرتبطة بمرحلة ما ، تحتاج إلى تشغيل المرحلة المحددة لتشغيلها.

أعلم أنه يمكنني إضافة معرف إلى عنصر التنفيذ ، ولكن كيف أشير إلى هذا المعرف على سطر الأوامر.

غير مدعوم. ما هو ممكن للإضافات التي تم استدعاؤها على CLI هو تحديد أ غير عالمي التكوين في POM باستخدام الخاص default-cli executionId, ، مثله:

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

هل هذا ممكن ، أم أنني سأذهب إلى هذا بالطريقة الخاطئة؟

لا ، غير ممكن. إما اجتياز المعلمات على سطر الأوامر أو استخدم ملفات تعريف (مع أو بدون التنفيذ الافتراضي أعلاه).

مراجع

نصائح أخرى

يتم الآن دعم تنفيذ أهداف متعددة من CLI في Maven 3.3.1+

mvn exec:java@first-cli
mvn exec:java@second-cli

عندما تكون المعرفات الأولى/Cli/Second-Cli هي معرفات التنفيذ.

http://blog.soebes.de/blog/2015/03/17/apache-maven-3-dot-3-1-features/

مرحبًا ، يمكنك إنشاء هدفك مثل هذا:-

org.myplugin:myplugin-maven-plugin:1.1.1:myGoal  i.e
<groupId>:<artifactId>:<version>:<yourgoal>

إنه يعمل في حالتي ...

الافتراض الذي قدمته إذا اتصلت

  mvn myplugin:myGoal

ولكن المشكلة هي أنك ستحصل على رسالة خطأ لأن التنفيذ ليس له معرف فريد (كلاهما في هذه الحالة لهما نفس الشيء).

يمكنك الوصول إلى ما تحب القيام به عبر ملفات تعريف يمكنك تنشيطها عبر MVN -PXYZ و MVN -PABC

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top