是否可以使用gradle’application’插件指定多个主类
我想使用Gradle“application”插件为第二个mainClass创建startScripts。 这可能吗? 即使应用程序插件没有内置此function,是否可以利用startScripts任务为不同的mainClass创建第二对脚本?
在你的root build.gradle中添加这样的东西:
// Creates scripts for entry points // Subproject must apply application plugin to be able to call this method. def createScript(project, mainClass, name) { project.tasks.create(name: name, type: CreateStartScripts) { outputDir = new File(project.buildDir, 'scripts') mainClassName = mainClass applicationName = name classpath = project.tasks[JavaPlugin.JAR_TASK_NAME].outputs.files + project.configurations.runtime } project.tasks[name].dependsOn(project.jar) project.applicationDistribution.with { into("bin") { from(project.tasks[name]) fileMode = 0755 } } }
然后从根或子项目中调用如下:
// The next two lines disable the tasks for the primary main which by default // generates a script with a name matching the project name. // You can leave them enabled but if so you'll need to define mainClassName // And you'll be creating your application scripts two different ways which // could lead to confusion startScripts.enabled = false run.enabled = false // Call this for each Main class you want to expose with an app script createScript(project, 'com.foo.MyDriver', 'driver')
您可以创建多个CreateStartScripts
类型的任务,并在每个任务中配置不同的mainClassName
。 为方便起见,您可以循环执行此操作。
我结合了这两个答案的部分内容,得出了相对简单的解决方案:
task otherStartScripts(type: CreateStartScripts) { description "Creates OS specific scripts to call the 'other' entry point" classpath = startScripts.classpath outputDir = startScripts.outputDir mainClassName = 'some.package.app.Other' applicationName = 'other' } distZip { baseName = archivesBaseName classifier = 'app' //include our extra start script //this is a bit weird, I'm open to suggestions on how to do this better into("${baseName}-${version}-${classifier}/bin") { from otherStartScripts fileMode = 0755 } }
应用应用程序插件时会创建startScripts。
- 使用详细类加载运行Gradle?
- 使用Javafx android-tools创建Android项目后,清空bin,libs,src文件夹
- 为什么InetAddress.getLocalHost()。getHostName()返回与bash“hostname”不同的值?
- 在IntelliJ IDEA和Gradle上调试时等待用户输入
- 如何通过在gradle命令行上传递version属性来设置project.version?
- 配置Gradle以发布源和javadoc
- 如何自动添加gradle依赖项
- Gradle Build失败并出现exception:java.exe’以非零退出值2结束
- org.springframework.boot.web.support不存在