一个任务的方法由gradle中的另一个任务自动调用

时间:2016-08-01 08:13:44

标签: java gradle console user-input build.gradle

我在 build.gradle 文件中遇到问题。我使用的是gradle版本 2.14.1 。在我的gradle构建中,有一个名为ask()的函数,我在task grun(type:JavaExec) {...}中使用,它由其他任务自动调用。我不希望这种情况发生。 ask()函数在我运行gradle grun --no-daemon时调用gradle控制台来获取用户的输入。但我在gradle compile --no-daemongradle grunGui --no-daemongradle grunTree --no-daemon等所有gradle任务中都获得了控制台,除了grun之外,其他任务都不依赖于此任务。这是我的gradle代码:

apply plugin: 'antlr'

repositories {
   mavenCentral()
}

dependencies {
  antlr 'org.antlr:antlr4:4.5.2'    // using ANTLR v4
}

generateGrammarSource {
  /*arguments += ["-visitor", "-long-messages"]*/
  arguments += ["-visitor", "-no-listener"]
}

task compile(type: JavaCompile){
  classpath = project.getConfigurations().getByName(AntlrPlugin.ANTLR_CONFIGURATION_NAME) + sourceSets.main.runtimeClasspath
  source = fileTree(dir: 'src/main/', include: '*.java')
  destinationDir = file('build/classes/main')
}

task grunGui (type:JavaExec){
  classpath = project.getConfigurations().getByName(AntlrPlugin.ANTLR_CONFIGURATION_NAME) + sourceSets.main.runtimeClasspath
  main = 'org.antlr.v4.gui.TestRig'

  def grammarName = "Wolf"
  args = [grammarName, 'init', '-gui', "src/main/Wolf/first.wlf"]
}

task grunTokens (type:JavaExec){
  classpath = project.getConfigurations().getByName(AntlrPlugin.ANTLR_CONFIGURATION_NAME) + sourceSets.main.runtimeClasspath
  main = 'org.antlr.v4.gui.TestRig'

  def grammarName = "Wolf"
  args = [grammarName, 'init', '-tokens', "src/main/Wolf/first.wlf"]
}

task grunTree (type:JavaExec){
  classpath = project.getConfigurations().getByName(AntlrPlugin.ANTLR_CONFIGURATION_NAME) + sourceSets.main.runtimeClasspath
  main = 'org.antlr.v4.gui.TestRig'

  def grammarName = "Wolf"
  args = [grammarName, 'init', '-tree', "src/main/Wolf/first.wlf"]
}

def ask() {
  def console = System.console()
  if (console)
    return console.readLine('\n> Please enter input string or filename to parse OR press enter⏎ to skip:\n')
  else
    logger.error "Cannot get console. Using default inputFile src/main/Wolf/first.wlf"
  return ''
}

task grun(type:JavaExec) {
  classpath = project.getConfigurations().getByName(AntlrPlugin.ANTLR_CONFIGURATION_NAME) + sourceSets.main.runtimeClasspath
  main = 'Wolf'
  def input = ask()
  args = input.length() > 0 ? [input] : ["src/main/Wolf/first.wlf"]
}

Console is coming while calling compile task

0 个答案:

没有答案