如何让Gradle根据配置文件动态指定Java项目的mainClass?
自动根据配置切换Gradle的mainClass
方案一:基于现有config.properties文件实现
- 先在你的
config.properties中添加UI类型配置:# 可选值:terminal 或 gui UI=terminal - 修改
build.gradle,读取配置文件并动态设置mainClassName:// 加载项目根目录下的config.properties(如果文件在resources里,路径改成src/main/resources/config.properties) def configProps = new Properties() file('config.properties').withInputStream { inputStream -> configProps.load(inputStream) } // 获取UI配置,默认用gui作为 fallback def uiMode = configProps.getProperty('UI', 'gui').trim().toLowerCase() // 根据配置切换主类,替换成你实际的全类名 mainClassName = uiMode == 'terminal' ? 'com.yourproject.TerminalEntry' : 'com.yourproject.GuiEntry'
方案二:使用Gradle原生配置文件(更简洁)
如果不想复用config.properties,可以直接用Gradle默认识别的gradle.properties(和build.gradle同目录):
- 在
gradle.properties中添加:UI=gui - 修改
build.gradle读取该配置:// 读取gradle.properties中的UI配置,默认值设为gui def uiMode = project.findProperty('UI') ?: 'gui' // 切换主类,替换成你的实际类路径 mainClassName = uiMode.toLowerCase() == 'terminal' ? 'com.yourproject.TerminalEntry' : 'com.yourproject.GuiEntry'
额外技巧:命令行临时切换
不需要修改配置文件,直接在运行时指定UI模式:
gradle run -PUI=terminal
注意事项
- 确保主类的全类名完全正确,否则会抛出类找不到的异常
- 代码中加入了
toLowerCase()和trim(),避免配置值大小写或空格导致的判断错误
内容的提问来源于stack exchange,提问作者max23
相关产品推荐
相关产品推荐

