Maven ile oluşturup çalıştırmak için yapılandırılmış bir projem var. Proje, platforma özgü yerel kitaplıklara bağlıdır ve bu bağımlılıkları yönetmek için here bulunan stratejiyi kullanıyorum. Temel olarak, belirli bir platform için .dll
veya .so
dosyaları, bir jar içine paketlenir ve hedef platformu tanımlayan bir sınıflandırıcıyla Maven sunucusuna aktarılır. Maven bağımlılık eklentisi daha sonra platforma özgü jar'i paketinden çıkarır ve yerel kütüphaneleri hedef klasöre kopyalar.Maven 'exec: exec' ile Argümanlar kullanın
Normalde, bir Java programını çalıştırmak için mvn exec:java
kullanırım, ancak exec:java
uygulamaları, sınıf yolunu değiştirmemi engelleyen Maven ile aynı JVM'de çalışır. Yerel bağımlılıklar sınıf yoluna ekleneceğinden, bunun yerine mvn exec:exec
'u kullanmak zorunda kalıyorum. Bu pom ilgili snippet'tir:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Djava.library.path=target/lib</argument>
<argument>-classpath</argument>
<classpath />
<argument>com.example.app.MainClass</argument>
</arguments>
</configuration>
</plugin>
...
Bu uygulamanın varsayılan yapılandırması için çalışıyor, ama komut satırında bazı isteğe bağlı parametreleri belirtmek isterler. İdeal olarak, ben böyle bir şey yapmak istiyorum:
mvn exec:exec -Dexec.args="-a <an argument> -b <another argument>"
Maalesef exec.args
değişkenini belirterek (sınıf yolunu ayarlamak ve uygulamayı çalıştırmak için gereklidir) pom içinde ben argümanları üzerine yazar. Bunun etrafında bir yolu var mı? Komut satırında bazı isteğe bağlı argümanları belirlemenin en iyi yolu, pompamda ne yazdığımı yazmadan mı?
Ve nasıl ese argümanlarına Java kodunda erişilebilir, yani bu satır: 'String [] args'? – zygimantus
@zygimantus istediğiniz mvn exec: java -Dexec.mainClass = "path.to.your.class" -Dexec.args = "arg1 arg2" 'orijinal sorunun kapsamı dışındadır. – dr0i