java - 在一致的环境中执行 Java 程序

标签 java shell ant build command-line-interface

在我工作的地方,我们有一个 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/

相关文章:

java - 从 eclipse web 项目创建 war 文件

java - Woodstox 通过 SimpleXML 属性限制 - 如何设置它们?

java - 集成 R 和 Hadoop(使用 JRI)

java - 在 android-j2se 上使用 SSL 与服务器客户端套接字通信

java - 选择子数组而不复制到新缓冲区?

shell - 路径中有FIFO时如何递归grep

linux - 如何使用 shell 脚本对新文件中的第 3 列进行排序,并更改新文件中第 2 列的相应值?

python - Python 中的子进程 : File Name too long

java - Ant调用子项目父项目ivy.xml覆盖子项目ivy.xml

Ant 获取文件创建时间戳