从命令行运行中/小型Java程序的最佳方法是什么?

时间:2012-09-03 17:50:15

标签: java linux ant

来自c ++ / make背景,我习惯做这样的事情来构建和运行小/中程序:

make
./foobar

然而,使用java / ant我发现我必须做这样的事情:

ant
java -ea -cp build/ foobar

每次我想测试我的程序时输入java -ea -cp build/ foobar都非常烦人,我宁愿做一些简单的事情,比如./foobar

我想出了两个可能解决这个问题的方法,但似乎都不是很好。第一个是让compile目标创建一个名为run的文件:

#!/bin/bash

java -ea -cp build/ foobar

然后只使用./run来运行程序,但这似乎违背了ant的跨平台性质,而且看起来有点像黑客。

第二个选项是创建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程序?或者我应该使用我在这里发布的方法之一吗?

1 个答案:

答案 0 :(得分:3)

在我看来,你想在开发阶段建立/运行。

如果是这样,那么得到一个Eclipse并用它来调试/运行,这是在java下开发的最有效方法。

一般:

  • Ant用于包装阶段

  • shell用于运行程序,你可以为每个环境编写一个(Linux / Windows / Mac OS)