java - 制作自定义 Gradle 任务,生成代码,在 IDE 导入上运行

标签 java gradle intellij-idea code-generation gradle-kotlin-dsl

由于 axis2(一个 wsdl 代码生成器)没有 Gradle 插件,因此我在自定义 Gradle 任务中调用了 Ant 任务。

到目前为止,./gradlew build 生成代码,./gradlew clean 删除它。此外,仅当检测到输入文件或输出目录中的更改时才会生成代码。

我遇到的唯一问题是,当项目导入 IDE 时,代码不会自动生成。

我需要如何更改下面的 build.gradle.kts 才能让 IDE(目前是 IntelliJ,但我也希望支持 Eclipse)在导入时生成代码?

<小时/>
plugins {
    id("base") // needed for delete
}

val axis2 by configurations.creating

dependencies {
    axis2("org.apache.axis2:axis2-ant-plugin:$axis2Version")
    axis2("org.apache.axis2:axis2-xmlbeans:$axis2Version")
}


val wsdl2Java by tasks.registering {
    group = "build"
    description = "Creates Java classes and resources from WSDL schema."

    inputs.files(fileTree("$projectDir/src/main/resources/wsdl"))
    outputs.dir("$projectDir/generated/")

    doLast {
        ant.withGroovyBuilder {
            "echo"("message" to "Generating Classes from WSDL!")
            "taskdef"("name" to "codegen", "classname" to "org.apache.axis2.tool.ant.AntCodegenTask", "classpath" to axis2.asPath)
            "codegen"(
                    "wsdlfilename" to "$projectDir/src/main/resources/wsdl/MP12N-H-HOST-WEB-SOAP.wsdl",
                    "output" to "$projectDir/generated/",
                    "targetSourceFolderLocation" to "src/main/java",
                    "targetResourcesFolderLocation" to "src/main/resources",
                    "packageName" to "de.hanel.com.jws.main",
                    "databindingName" to "xmlbeans")
        }
    }
}


val deleteGenerated by tasks.registering(Delete::class) {
    delete("$projectDir/generated/")
}

tasks {
    compileJava {
        dependsOn(wsdl2Java)
    }

    clean {
        dependsOn(deleteGenerated)
    }
}

java {
    sourceSets["main"].java {
        srcDir("generated/src/main/java")
    }

    sourceSets["main"].resources {
        srcDir("generated/src/main/resources")
    }
}

最佳答案

您可以mark any task or run configuration to be activated Gradle 导入或 IDE make 之前/之后:

enter image description here

关于java - 制作自定义 Gradle 任务,生成代码,在 IDE 导入上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55373141/

相关文章:

java - 我的 2d 迷宫解算器不适用于多项选择

gradle - 我在命令提示符下收到消息 'ancestor C:\Users\max\gradle is not a directory'

java - 为什么我的 jar 在 Windows 上运行而不在 Linux 上运行

php - Intellij Idea Community Addition 安装PHP插件

java - logback 在 appender 中打印完整的 MDC

java代码执行在没有断点和正常运行的调试中产生不同的结果。 ExecutorService 坏了吗?

java - 将命名策略设置为一个类的小驼峰大小写

android - 无法找到项目的匹配配置

android - 与 Gradle 相比,使用 Bazel 的额外优势是什么?

intellij-idea - 在 IntelliJ 中设置 JavaFX - VM 选项根本不起作用