来自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程序?或者我应该使用我在这里发布的方法之一吗?
答案 0 :(得分:3)
在我看来,你想在开发阶段建立/运行。
如果是这样,那么得到一个Eclipse并用它来调试/运行,这是在java下开发的最有效方法。
一般:
Ant用于包装阶段
shell用于运行程序,你可以为每个环境编写一个(Linux / Windows / Mac OS)