كيفية تمرير SystemProperties عند استدعاء Exec: Java Plugin في Maven؟
-
02-10-2019 - |
سؤال
أريد استخدام المكون الإضافي exec: java لاستدعاء الفصل الرئيسي من سطر الأوامر. يمكنني تمرير وسيط من سطر الأوامر باستخدام -Dexec.args="arg0 arg1 arg2"
, ، لا أعرف كيفية تمرير خصائص النظام. لقد جربت '-dexec.systemproperties = "key = value" `ولكن دون أي تأثير.
pom.xml
يشبه هذا:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
</configuration>
</plugin>
المحلول
لا توجد طريقة لتعيين ملف <systemProperties>
معامل على سطر الأوامر.
لكن منذ exec:java
ليس متشعبًا ، يمكنك فقط تمرير خاصية النظام إلى Maven وسيتم التقاطها بواسطة exec:java
كذلك.
mvn -Dkey=value exec:java -Dexec.mainClass=com.yourcompany.yourclass \
-Dexec.args="arg1 arg2 arg3"
نصائح أخرى
حاول المتابعة بالنسبة لي ، فهو يعمل بشكل صحيح
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>ibis.structure.Structure</mainClass>
<systemProperties>
<systemProperty>
<key>someKey</key>
<value>someValue</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
لقد واجهت مشكلة مماثلة وأردت كتابة إجابة كاملة للآخرين قد تصادف هذا السؤال.
على الرغم من أن السؤال لا يدور حول pom.xml ولكن حول سطر الأوامر - فإنه لا يوضح كيفية فعل الشيء نفسه مع pom.xml لذلك هنا هو
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>myPackage.MyMain</mainClass>
<systemProperties>
<property>
<key>myKey</key>
<value>myValue</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
لخط الأوامر - أعتقد Sean Patrick Floyd's
الإجابة جيدة - ومع ذلك ، إذا كان لديك شيء محدد بالفعل في pom.xml الخاص بك ، فسيتجاوزه.
حتى الجري
mvn exec:java -DmyKey=myValue
يجب أن تعمل أيضًا من أجلك.
يجب أن تلاحظ أيضًا أن ال وثائق exec plugin ينص على ما يلي
A list of system properties to be passed.
Note: as the execution is not forked, some system properties required
by the JVM cannot be passed here.
Use MAVEN_OPTS or the exec:exec instead. See the user guide for more information.
لذلك يمكنك أيضًا فعل شيء كهذا
export MAVEN_OPTS=-DmyKey=myValue
mvn exec:java
ويجب أن تعمل بنفس الطريقة.