2012-09-03 96 views
3

從C++ /做背景的,我已經習慣了做這樣的事情來構建和運行小型/中型項目:從命令行運行中小型Java程序的最佳方式是什麼?

make 
./foobar 

然而,與Java /螞蟻我發現我必須做些什麼像這樣:

ant 
java -ea -cp build/ foobar 

打字java -ea -cp build/ foobar我想測試我的程序每次都煩了,我寧願能夠做一些簡單的像./foobar

我想出了兩個可能的解決方案來解決這個問題,但都不是很好。首先是隻是有compile目標創建一個名爲run文件:

#!/bin/bash 

java -ea -cp build/ foobar 

,然後只用./run運行的程序,然而,這似乎跟螞蟻的跨平臺性,也似乎只是一個一點點黑客。

第二個選擇是創建一個run目標,例如:

<target name="run" depends="compile"> 
    <java classname="foobar" fork="true"> 
     <classpath> 
     <pathelement path="${build}"/> 
     <pathelement path="${java.class.path}"/> 
     </classpath> 
     <assertions> 
     <enable/> 
     </assertions> 
    </java> 
</target> 

此方法也適用,並且似乎有點清潔,但慢得令人難以置信!例如:

$ time ant run 
Buildfile: /somepath/build.xml 

init: 

compile: 

run: 
    [java] /* program output */ 

BUILD SUCCESSFUL 
Total time: 1 second 

real 0m2.683s 
user 0m2.548s 
sys  0m0.136s 

以上是幾乎20倍比這慢:

$ time ./run 
/* program output */ 

real 0m0.143s 
user 0m0.124s 
sys  0m0.020s 

那麼,有從命令運行的小/中的Java程序的一個更好/更標準的方式(!)線?或者我應該只使用我在這裏發佈的一種方法?

+0

我傾向於只是將命令寫出來,然後依靠我的shell的歷史記錄再次運行它。 ' -r foob '應該讓我那裏。我承認,對任何實際用戶都沒有幫助。 –

+0

如果你想快速運行一個程序,我會從IDE運行它。這讓您可以在您鍵入並單擊按鈕運行或運行Debug時查看編譯器錯誤。 –

+0

我不是Ant專家,但Gradle有一個[應用程序插件](http://gradle.org/docs/current/userguide/application_plugin.html),它提供了運行程序的「run」任務作爲'installApp'任務,它創建特定於平臺的啓動腳本。很可能有一個Ant等價物。 –

回答

3

在我看來,你想在開發階段建立/運行。

如果是這樣,那麼得到一個Eclipse並用它來調試/運行,這是在java下開發的最有效的方法。

一般:

  • 螞蟻用於包裝相

  • 外殼用於運行程序,你會寫每個環境中的一個(的Linux/Windows/Mac的OS)

+0

看來這可能是正確的答案。我使用命令行主要是爲了學習java編譯過程,我想沒有比我在我的問題中提出的更清晰的方式來運行程序。如果在接下來的幾個小時內沒有其他人,我會接受這個答案。 –

+0

這是爲不同操作系統提供不同shell腳本的常用方法。您還可以將這些shell腳本的生成作爲您的ant構建文件的一部分。 – coolcfan

+0

@GordonBailey幾小時過去了:-) –

相關問題