gradle ShadowJar:尚未为属性“mainClassName”指定值

qni6mghb  于 2022-11-14  发布在  其他
关注(0)|答案(8)|浏览(174)

在调整my buildfile时,我 * 似乎 * to have遇到了带有mainClassNamebug

  1. thufir@dur:~/NetBeansProjects/HelloSeleniumWorld$
  2. thufir@dur:~/NetBeansProjects/HelloSeleniumWorld$ ./gradlew clean ShadowJar --stacktrace
  3. > Task :shadowJar FAILED
  4. FAILURE: Build failed with an exception.
  5. * What went wrong:
  6. A problem was found with the configuration of task ':shadowJar'.
  7. > No value has been specified for property 'mainClassName'.
  8. * Try:
  9. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
  10. * Exception is:
  11. org.gradle.api.tasks.TaskValidationException: A problem was found with the configuration of task ':shadowJar'.
  12. at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.report(ValidatingTaskExecuter.java:70)
  13. at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
  14. at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
  15. at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
  16. at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:44)
  17. at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
  18. at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:55)
  19. at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
  20. at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:35)
  21. at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:49)
  22. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
  23. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
  24. at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
  25. at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
  26. at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
  27. at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:44)
  28. at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
  29. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:337)
  30. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:325)
  31. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:318)
  32. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:304)
  33. at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
  34. at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
  35. at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
  36. at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
  37. at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
  38. at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:74)
  39. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:167)
  40. at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:150)
  41. at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:41)
  42. at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
  43. at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
  44. at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
  45. at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
  46. at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
  47. at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
  48. at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:367)
  49. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
  50. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
  51. at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
  52. at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
  53. at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
  54. at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:231)
  55. at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
  56. at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:133)
  57. at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:79)
  58. at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:76)
  59. at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:103)
  60. at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:96)
  61. at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
  62. at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
  63. at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
  64. at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:76)
  65. at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
  66. at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
  67. at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
  68. at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:49)
  69. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
  70. at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
  71. at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
  72. at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
  73. at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
  74. at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
  75. at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
  76. at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
  77. at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
  78. at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
  79. at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
  80. at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
  81. at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
  82. at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
  83. at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
  84. at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
  85. at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
  86. at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
  87. at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
  88. at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
  89. at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
  90. at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
  91. at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
  92. at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
  93. at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
  94. at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
  95. at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
  96. at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
  97. at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
  98. at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
  99. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  100. at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
  101. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  102. at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
  103. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  104. at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
  105. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  106. at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
  107. at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
  108. at org.gradle.util.Swapper.swap(Swapper.java:38)
  109. at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
  110. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  111. at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
  112. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  113. at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
  114. at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
  115. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  116. at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
  117. at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
  118. at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
  119. at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
  120. at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
  121. at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
  122. at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
  123. at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
  124. Caused by: org.gradle.api.InvalidUserDataException: No value has been specified for property 'mainClassName'.
  125. at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.report(ValidatingTaskExecuter.java:67)
  126. ... 111 more
  127. * Get more help at https://help.gradle.org
  128. Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
  129. Use '--warning-mode all' to show the individual deprecation warnings.
  130. See https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings
  131. BUILD FAILED in 3s
  132. 6 actionable tasks: 6 executed
  133. thufir@dur:~/NetBeansProjects/HelloSeleniumWorld$

构建文件:

  1. /*
  2. * This file was generated by the Gradle 'init' task.
  3. *
  4. * This generated file contains a sample Java project to get you started.
  5. * For more details take a look at the Java Quickstart chapter in the Gradle
  6. * user guide available at https://docs.gradle.org/5.0/userguide/tutorial_java_projects.html
  7. */
  8. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
  9. import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
  10. plugins {
  11. // Apply the java plugin to add support for Java
  12. java
  13. // Apply the application plugin to add support for building an application
  14. application
  15. kotlin("jvm") version "1.3.11"
  16. id("com.github.johnrengelman.shadow") version "2.0.4"
  17. }
  18. repositories {
  19. // Use jcenter for resolving your dependencies.
  20. // You can declare any Maven/Ivy/file repository here.
  21. jcenter()
  22. mavenCentral()
  23. }
  24. dependencies {
  25. compile (group= "org.seleniumhq.selenium", name = "selenium-java", version = "3.+" )
  26. // This dependency is found on compile classpath of this component and consumers.
  27. implementation("com.google.guava:guava:26.0-jre")
  28. // Use TestNG framework, also requires calling test.useTestNG() below
  29. testImplementation("org.testng:testng:6.14.3")
  30. }
  31. application {
  32. // Define the main class for the application
  33. mainClassName = "HelloSeleniumWorld.App"
  34. }
  35. val test by tasks.getting(Test::class) {
  36. // Use TestNG for unit tests
  37. useTestNG()
  38. }

mainClassName应在何处声明?

q5lcpyga

q5lcpyga1#

我在Gradle 6.7和id "com.github.johnrengelman.shadow" version "6.1.0"中遇到了同样的问题,并在GradleKotlinDSL中发现,我们应该像下面这样设置mainClassName

  1. // Required by the 'shadowJar' task
  2. project.setProperty("mainClassName", "com.your.MainClass")

在这之后,它对我起作用了。

bejyjqdl

bejyjqdl2#

如果您正在Heroku上部署ktor api并面对ShadowJar:没有为属性'mainClassName'指定值那么不用担心,只需将影子插件的版本更新到6.0.0(更新版本)

  1. dependencies {
  2. classpath 'com.github.jengelman.gradle.plugins:shadow:6.0.0'
  3. }

错误消失了

u3r8eeie

u3r8eeie3#

在文件的根目录中。您需要类似如下的内容:主类名= 'com.您的.主类'

dba5bblo

dba5bblo4#

一个较新的解决方案,Gradle v6.7.1(已经)支持该解决方案,v7默认支持该解决方案。#

  1. application {
  2. // Define the main class for the application.
  3. getMainClass().set("org.organisation.HelloWorld")
  4. }
7z5jn7bk

7z5jn7bk5#

那个建议对我起作用了
如果在应用插件之前定义mainClassName,则构建会成功。

bprjcwpo

bprjcwpo6#

如果有人得到这个问题与micronaut +Kotlin+ gradlew kotlin,只是把这个添加到您的build.gradle.kts:

  1. application {
  2. mainClass.set("com.you.package.YourApplication.kt")
  3. }
mctunoxg

mctunoxg7#

感谢@kevinmm的评论
在我的情况下,micronautkotlingraphqlbuild.gradle.kts,我不得不升级ShadowJar插件版本到7.1.2,以及支持gradle 7.4版本的mainclass.set("com.xyz.AbdApplication"),如插件文档所示
https://github.com/johnrengelman/shadow#latest-test-compatibility
下面是我的build.gradle.kts的代码,适合像我这样的新手使用

  1. plugins {
  2. application
  3. id("com.github.johnrengelman.shadow") version "7.1.2"
  4. id("org.jlleitschuh.gradle.ktlint") version "10.1.0"
  5. kotlin("jvm") version "1.5.20"
  6. kotlin("kapt")
  7. groovy
  8. jacoco
  9. }
  10. application {
  11. mainClass.set("com.abc.xyz.YourClassName")
  12. }
展开查看全部
qlfbtfca

qlfbtfca8#

将此添加到我的build.gradle.kts对我很有效。

  1. application {
  2. project.setProperty("mainClassName", "com.your.MainClassKt")
  3. }

相关问题