我正在用Java编写服务器。为了支持服务器的开发,我有一些带有main()方法的类,我打算从命令行运行它们作为开发工具来执行诸如诊断,模拟客户端连接和运行模块之类的东西,与其余部分隔离开来。服务器。目前,这些类是主服务器项目的一部分。
构建项目以支持这些多个可执行工具的最佳方法是什么?我应该为这些模拟/加载/诊断工具创建单独的项目,还是将它们保存在主服务器项目中?如果我将它们保留在主项目中,我是否应该将项目配置为构建多个可执行jar或具有多个入口点的jar?如果使用单个jar,是否可以将服务器的主入口点指定为默认值?
答案 0 :(得分:8)
除非服务器和实用程序具有完全不同的依赖关系,否则我会将其简化,并将所有内容放在一个jar中。提供shell脚本,将调用包装到适当的类:
# startServer.cmd
java -cp MyServer.jar;other.jar com.foo.myserver.Main
#showDiagniostics.cmd
java -cp MyServer.jar;other.jar com.foo.myserver.Diagnostics
您可以将服务器启动类作为主类使其成为可执行jar,但我发现使用可执行脚本比使用java -jar MyServer.jar