使用Kotlin DSL的Gradle应用程序插件,具有多个主类。

3

我有一个Java应用程序,其中有多个主类,build.gradle是用kotlin编写的,命名为build.gradle.kts。

它失败并出现错误“Build failed with an exception”

脚本编译错误:

第50行:task(runSimple,dependsOn:“classes”,type:JavaExec){

期望')'

我可以通过使用如Gradle应用程序插件中的多个主类所示的build.gradle解决该问题。

但是团队想要继续使用kotlin。

apply plugin: 'java'

task(runSimple, dependsOn: 'classes', type: JavaExec) { 
   main = 'com.mrhaki.java.Simple'
   classpath = sourceSets.main.runtimeClasspath
   args 'mrhaki'
   systemProperty 'simple.message', 'Hello '
}

使用build.gradle时的代码是可以工作的,

但是

plugins {
  java 
  application
}

task(runSimple, dependsOn: 'classes', type: JavaExec) {
   main = 'com.mrhaki.java.Simple'
   classpath = sourceSets.main.runtimeClasspath
   args 'mrhaki'
   systemProperty 'simple.message', 'Hello '
}

无法运行

应该能够运行com.mrhaki.java.Simple类,但是现在无法运行

我猜kotlin翻译不正确。

2个回答

2

我最终找到了一个有用的资源使用Gradle Kotlin DSL执行JavaExec任务。这对我很有帮助。它可以在命令行上运行,只需输入./gradlew runSimple --debug-jvm即可。

group = "com.lapots.breed"
version = "1.0-SNAPSHOT"

plugins {
    java
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
}

repositories {
    mavenCentral()
}

task("runSimple", JavaExec::class) {
    main = "com.mrhaki.java.Simple"
    classpath = sourceSets["main"].runtimeClasspath
}

1
https://dev59.com/zq_la4cB1Zd3GeqPzd7a - riya
使用Gradle 8.2时,我必须使用以下代码: task("runSimple", JavaExec::class) { mainClass.set("com.mrhaki.java.Simple") classpath = sourceSets["main"].runtimeClasspath } - undefined

2
如果您想进行调试,那么请按照以下方式修改任务,并使用./gradlew runSimple运行,参考自gradle: change default port from 5005

不需要--debug-jvm

task("runSimple", JavaExec::class) {
    main = "com.mrhaki.java.Simple"
    classpath = sourceSets["main"].runtimeClasspath

jvmArgs= listOf( "-Xdebug", "-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=y")
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接