在我工作的地方,我们有一个 shell 脚本,它允许我们使用所有必要的库和设置执行任意 Java 类,例如:
#!/bin/sh
$JAVA_HOME/bin/java -cp LONG_LIST_OF_JARS -Xmx6g -XX:MaxPermSize=128m "$@"
像这样使用:
javacorp.sh com.mycorp.SomeJob
这显然比每次都需要显式指定所有 java
参数要好,但我不喜欢它只是手动连接到我们的 Eclipse 项目中配置的 jars 来编译代码库。我正在从事一个个人项目,希望能够从命令行执行任意类,并尝试确定如何最好地提供一致的 java
环境。
目前我正在使用 Eclipse 来运行我的应用程序,但我希望能够直接从命令行运行它们,或者在没有安装 Eclipse 的机器上运行它们。特别是,我还希望能够限制可以执行的类/ jar 的范围。例如,javacorp.sh
让我们可以在 src/
目录中运行任何东西,只有 javacorpunit.sh
包含 测试中的类/unit/
类路径中的目录。
- 是否有一种简洁的方法来使用 Ant、Maven 或其他构建工具在命令行中执行配置的
java
命令,同时使用最少的样板文件? - 有什么方法可以连接到 Eclipse 创建的
.classpath
文件中吗?这并不能完全解决我的问题(例如,一致的内存设置),但最好使用已经存在的数据。
编辑:
表达我的问题的另一种方式是“在命令行上复制 Eclipse 简单的‘运行当前文件的主要方法’按钮的最干净的方法是什么?”
最佳答案
您是否考虑过从 Ant 生成 shell 脚本? <pathconvert>
task可以从 <fileset>
创建类路径.
您可以为每种您想要的 shell 脚本创建一个 Ant 目标。 make
然后可以调用这些 Ant 目标来生成 shell 脚本。
关于java - 在一致的环境中执行 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19442706/