从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程序的一个更好/更标准的方式(!)线?或者我应该只使用我在这里发布的一种方法?
我倾向于只是将命令写出来,然后依靠我的shell的历史记录再次运行它。 ' -r foob '应该让我那里。我承认,对任何实际用户都没有帮助。 –
如果你想快速运行一个程序,我会从IDE运行它。这让您可以在您键入并单击按钮运行或运行Debug时查看编译器错误。 –
我不是Ant专家,但Gradle有一个[应用程序插件](http://gradle.org/docs/current/userguide/application_plugin.html),它提供了运行程序的“run”任务作为'installApp'任务,它创建特定于平台的启动脚本。很可能有一个Ant等价物。 –