Hızlı entegrasyon testinin bir parçası olarak Gradle aracılığıyla bir komut satırı Java uygulaması çalıştırmaya çalışıyorum. Derleme komut dosyalarımı Maven'den taşıyorum, bu işlemin kolayca yapılabildiğiexec-maven-plugin
. Benim iki büyük ihtiyacım:
- Sistem özelliklerini çalıştırılabilir Java koduna geçirebilme
- Komut satırı bağımsız değişkenlerini çalıştırılabilir Java koduna geçirebilme
Lütfen bu özellikleri derleme betiğinde okumaya çalışmadığımı, betiğin oluşturup çalıştırdığı Java programında okumaya çalıştığımı unutmayın.
Ben diğer iki SO Mesajları bulduk adresinin Java programı Gradle aracılığıyla yürütme: savunucuları kullanarak bu bir cevap bir apply plugin: "application"
yapı dosyasında ve gradle run
komut satırına ve cevapları bu yaklaşımı savunan yanı sıra kullanan başka task execute(type:JavaExec)
yapı dosyasında ve gradle execute
de komut satırı . Her iki yaklaşımı da denedim ve başarılı olamadım.
İki sorunum var:
(1) Sistem özelliklerini okumak için çalıştırılabilir Java dosyasını alamıyorum
Bunu yapsam da:
build.gradle :
apply plugin: 'application'
mainClassName = "com.mycompany.MyMain"
Komut satırı :
gradle run -Dmyproperty=myvalue
Veya bu:
build.gradle :
task execute (type:JavaExec) {
main = "com.mycompany.MyMain"
classpath = sourceSets.main.runtimeClasspath
}
Komut satırı :
gradle execute -Dmyproperty=myvalue
Her iki durumda da, myproperty
başaramaz. MyMain.main (...)
Çalıştırmaya başlayan kod , myproperty
sistem özelliğini boş / eksik olarak okur .
(2) Komut satırı argümanlarını iletemiyorum
Bu muhtemelen ilk problemle ilgilidir. İçindeexec-maven-plugin
, örneğin, bir komut satırı bağımsız değişken kendileri bir sistem özelliği aracılığıyla geçirilen edildi. Gradle'da durum bu mu, yoksa komut satırı argümanlarını iletmenin başka bir yolu var mı?
Bu değişkenleri nasıl geçiririm? Ayrıca, kullanmak daha mı iyi apply plugin: 'application'
yoksa task execute (type:JavaExec)
?