具有多个主要入口点和可执行文件的Java项目结构?

Hol*_*osa 4 java program-entry-point jar

我正在用Java编写服务器.为了支持服务器的开发,我有一些带有main()方法的类,我打算从命令行运行这些类作为开发工具来执行诸如诊断,模拟客户端连接和运行模块之类的东西,与其余部分隔离开来.服务器.目前,这些类是主服务器项目的一部分.

构建项目以支持这些多个可执行工具的最佳方法是什么?我应该为这些模拟/加载/诊断工具创建单独的项目,还是将它们保存在主服务器项目中?如果我将它们保留在主项目中,我是否应该将项目配置为构建多个可执行jar或具有多个入口点的jar?如果使用单个jar,是否可以将服务器的主入口点指定为默认值?

JB *_*zet 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
Run Code Online (Sandbox Code Playgroud)

您可以将服务器启动类作为主类使其成为可执行jar,但我发现使用可执行脚本比使用它更容易 java -jar MyServer.jar