我正在编写一个命令行工具,该工具应适用于所有流行的平台(Windows,Mac和Linux)。我正在考虑在golang
中编写它,因为它可以生成静态编译的二进制文件,并且可以在上述所有平台上运行。在我做出决定之前,我需要评估Java
,看看它是否可以做到这一点。
我想知道是否可以用Java创建一流的命令行程序? AFAIK,Java程序需要像
一样启动java -cp classpath MyApp
现在我需要将它包装在shell脚本中以改善体验。像,
#!/bin/sh
java -cp classpath MyApp $@
现在用户可以这样做:
myapp --arg1 value --arg2 value
问题是这种方法不是跨平台的。在Windows上,我需要编写一个批处理文件来执行此操作。
我不确定这是否是在Java中正确的方法。有没有更好的方法来处理这个问题?
答案 0 :(得分:2)
您发布的解决方案(调用特定于平台的脚本文件)确实是最简单,最快速的实现方式。如果这不足以满足您的需求,那么有几种解决方案可以提供更好的可用性:
编辑 - 相关SO问题中的更多选项here
答案 1 :(得分:1)
要轻松使用命令行参数,您可以使用Apache CLI。如果缺少某些参数,它会解析参数并打印它们的列表。在java项目中,在bin文件夹中同时包含*.bat
和*.sh
文件总是可以的。你对这种方法有什么困惑?例如,看看Ant或Maven项目。
答案 2 :(得分:0)
我可能会建议使用Maven,它有一个名为“maven spring shell”的概念很容易开发。你确实需要为windows和linux编写.bat和.sh,但它更像是一种配置类型。包装会更容易。 以下链接可以帮助您 developing spring shell applications