使用gradle“run”运行main方法任务 [英] run main method using gradle "run" task

查看:3475
本文介绍了使用gradle“run”运行main方法任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过gradle任务运行我的 main 方法



这是我通过cmd运行的方式:



java -cp RTMonitor.jar com.bla.MainRunner first_arg



它应该如何写入gradle?

  run {
args + = ['java - CP RTMonitor.jar com.bla.MainRunner first_arg']
}

<强>更新



我试过了

 任务myRun(type :JavaExec){
类路径configurations.main
主要= com.bla.runners.StatsLogGenerator
ARGS ARG1, ARG2
}

我得到了:

错误: (71,0)无法在配置容器上找到属性'main'。

 我有尝试:
任务myRun(类型:JavaExec){
classpathconfigurations.main
main =com.bla.runners.StatsLogGenerator
argsarg1, arg2

我得到一个错误:

 失败:生成失败,出现异常。 
17:49:21.855 [错误] [org.gradle.BuildExceptionReporter]
17:49:21.856 [错误] [org.gradle.BuildExceptionReporter] *出错:
17:49 :21.856 [错误] [org.gradle.BuildExceptionReporter]任务':myRun'的执行失败。
17:49:21.856 [错误] [org.gradle.BuildExceptionReporter]>处理'命令'/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java''以非零退出值1
17:49:21.864 [错误] [组织。 gradle.BuildExceptionReporter]
17:49:21.865 [错误] [org.gradle.BuildExceptionReporter] *例外:
17:49:21.866 [错误] [org.gradle.BuildExceptionReporter] org.gradle。 api.tasks.TaskExecutionException:任务':myRun'的执行失败。
17:49:21.867 [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)

17:49:21.882 [错误] [org.gradle.BuildExceptionReporter]在org.gradle.process.internal.DefaultExecHandle $ ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:361)
17:49:21.882 [错误] [有机(DefaultJavaExecAction.java:31)

但是当我通过Intellij运行时,每个thig都可以正常工作。

最简单的方法是使用应用程序插件。将 apply apply plugin:'application'添加到您的build.gradle并设置 mainClassName = com.bla.MainRunner 。将参数添加到主类中修改运行任务并编辑args属性

  run {
args + =' first_arg'
}

如果您想要不同的类路径,您可以编辑运行任务的classpath属性。



如果您需要更多定制,您可以像这样定义自己的类型为JavaExec的任务

 任务myRun(类型:JavaExec){
classpath sourceSets.main.runtimeClasspath $ b $ main =com.bla.MainRunner
argsarg1,arg2
}


I want to run my main method via gradle task

This is how I run via the cmd:

java -cp RTMonitor.jar com.bla.MainRunner first_arg

how should it be written in gradle?

run {
    args += ['java -cp RTMonitor.jar com.bla.MainRunner first_arg']
}

Update

I have tried

task myRun(type: JavaExec) {
    classpath configurations.main
    main = "com.bla.runners.StatsLogGenerator"
    args "arg1", "arg2"
}

and I got:

Error:(71, 0) Could not find property 'main' on configuration container.

the I have tried:
    task myRun(type: JavaExec) {
        classpath "configurations.main"
        main = "com.bla.runners.StatsLogGenerator"
        args "arg1", "arg2"
    }

and i got an error:

FAILURE: Build failed with an exception.
17:49:21.855 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':myRun'.
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
17:49:21.864 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.865 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
17:49:21.866 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':myRun'.
17:49:21.867 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)

17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:361)
17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)

but when I run via Intellij, every thig works OK

解决方案

The easiest is probably to use application plugin. Add apply plugin: 'application' to your build.gradle and set mainClassName = com.bla.MainRunner . To add arguments to your main class modify the run task and edit the args property

run {
  args += 'first_arg'
}

Classpath is taken automatically from main sourceSet, if you want different one, you can edit classpath property of the run task.

If you need more customization, you can define your own task of type JavaExec like this

task myRun(type: JavaExec) {
  classpath sourceSets.main.runtimeClasspath
  main = "com.bla.MainRunner"
  args "arg1", "arg2"
}

这篇关于使用gradle“run”运行main方法任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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