是否可以使用gradle'application'插件指定多个主类 [英] Is it possible to specify multiple main classes using gradle 'application' plugin

查看:401
本文介绍了是否可以使用gradle'application'插件指定多个主类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Gradleapplication插件为第二个mainClass创建startScripts。这可能吗?即使应用程序插件没有内置此功能,是否可以利用startScripts任务为另一个mainClass创建第二对脚本?

I would like to use the Gradle "application" plugin to create startScripts for a second mainClass. Is this possible? Even if the application plugin doesn't have this functionality built in, is it possible to leverage the startScripts task to create a second pair of scripts for a different mainClass?

推荐答案

在您的根build.gradle中添加如下内容:

Add something like this to your 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
    }
  }
}

然后无论是从根目录还是从子项目中调用它:

Then call it as follows either from the root or from subprojects:

// 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')

这篇关于是否可以使用gradle'application'插件指定多个主类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆