2016-07-06 73 views
3

運行使用Gradle構建的Java應用程序需要向類路徑添加每個單獨庫的目錄,因爲它將它們存儲在各個目錄中。如何使用gradle構建的項目執行命令行工具?

因此,當您查看在IntelliJ中啓動應用程序的命令時,您可以輕鬆地看到整個屏幕充滿了類路徑依賴關係。

這對IntelliJ很好,因爲它可以自動計算出來,但我希望能夠在終端中運行我的命令行工具,在那裏寫參數而不是每次我想改變任何東西時編輯運行配置。如何在不從IDE粘貼整個機器特定的JAR依賴關係的情況下這樣做?

是否有可能在開發環境中執行此操作,而無需創建捆綁所有庫的巨大JAR文件?

+0

難道我理解正確的話,你想從命令行運行jar,還可以爲程序提供命令行參數,而無需爲JVM提供正確的參數? – majk

+0

我不介意它是從JAR還是從類文件運行。我想要一個可以讓我調用程序的單行程式。 – Alicia

回答

4

看看JavaExec task。您可以創建自定義任務,例如:

task customRun(type: JavaExec) { 
    classpath = sourceSets.main.runtimeClasspath 
    main = "fully.qualified.name.of.your.main" 
    args = ["100", "1000" ...] // the command line options for your tool 
    jvmArgs = [ ... ] // additional JVM args you might need 
} 

然後你就可以使用gradle customRun調用它。如果你希望能夠提供命令行參數,我會建議使用gradle這個屬性:

gradle -PcustomRunArgs="100 1000" customRun 

和修改任務搶參數:

task ... { 
    ... 
    if (project.hasProperty('customRunArgs')) { 
     args = customRunArgs.split(' ') 
    } 
    ... 
} 
+0

它不處理帶空格的參數。你需要一個解析器。如果沒有包裝腳本,它太麻煩了,它也會使用大量的gradle stuff來混淆輸出,但它比IDE中的副本更好。 – Alicia

+1

要減少gradle冗長度,請使用開關'-q'。要使用空格支持命令行選項,請查看[CliBuilder](http://mrhaki.blogspot.ch/2009/09/groovy-goodness-parsing-commandline.html) – majk

相關問題