Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使生成代码的自定义Gradle任务在IDE导入上运行_Java_Gradle_Intellij Idea_Code Generation_Gradle Kotlin Dsl - Fatal编程技术网

Java 使生成代码的自定义Gradle任务在IDE导入上运行

Java 使生成代码的自定义Gradle任务在IDE导入上运行,java,gradle,intellij-idea,code-generation,gradle-kotlin-dsl,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在导入时生成代码 插件{ idbase//需要删除 } val ax

因为axis2没有用于wsdl代码生成器的Gradle插件,所以我在自定义Gradle任务中调用了Ant任务

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

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

我需要如何更改下面的build.gradle.kts才能使IDE当前处于IntelliJ状态,但我还希望支持Eclipse在导入时生成代码

插件{ idbase//需要删除 } val axis2 by configurations.creating 依赖关系{ axis2org.apache.axis2:Axis2Ant插件:$axis2Version axis2org.apache.axis2:axis2 xmlbeans:$axis2Version } val wsdl2Java by tasks.registing{ 组=构建 description=从WSDL模式创建Java类和资源。 filefiletree$projectDir/src/main/resources/wsdl outputs.dir$projectDir/generated/ 多拉斯特{ ant.withGroovyBuilder{ 从WSDL生成类的echomessage! taskdefname到codegen,classname到org.apache.axis2.tool.ant.AntCodegenTask,classpath到axis2.asPath 编码基因 wsdlfilename到$projectDir/src/main/resources/wsdl/MP12N-H-HOST-WEB-SOAP.wsdl, 输出到$projectDir/generated/, targetSourceFolderLocation到src/main/java, targetResourcesFolderLocation到src/main/resources, packageName到de.hanel.com.jws.main, 将databindingName绑定到xmlbeans } } } val Delete由tasks.registeringDelete::class生成{ 删除$projectDir/generated/ } 任务{ 内贾瓦{ dependsOnwsdl2Java } 干净的{ dependsOndeleteGenerated } } 爪哇{ sourceset[main].java{ srcDirgenerated/src/main/java } sourceSets[main]。资源{ srcdiregenerated/src/main/resources } } 您可以在Gradle导入或IDE生成之前/之后执行以下操作:


我现在有一个有效的解决方案。Eclipse和IntelliJ都在导入时生成源代码

首先,我们添加特定于IDE的插件

apply {
    plugin("idea")
    plugin("eclipse")
}
然后,我们获得相应的IDE任务,并添加我们自己的任务(在val wsdl2Java中定义)作为依赖项

// find by name (in tasks container), since a module is also called 'idea'
project.tasks.findByName("idea")?.dependsOn(wsdl2Java)
project.tasks.findByName("eclipse")?.dependsOn(wsdl2Java)
唯一的问题是Eclipse显然无法处理

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

    sourceSets["main"].resources {
        srcDir("generated/src/main/resources")
    }
}
但这是另一个问题

更新

下面的代码块告诉Eclipse包含生成的源代码

eclipse {
    classpath {
        plusConfigurations.add(configurations.findByName("compile"))
    }
}
这告诉IntelliJ将生成的和已经包含的源标记为已生成

idea {
    module {
        generatedSourceDirs.add(file("generated/src/main/java"))
    }
}

谢谢,但这并不是我要问的:-我想配置构建系统。它应该告诉IDE做什么。这样对其他用户和我来说都更容易,如果我稍后再回到项目中,看起来这就是你需要的。我会更新答案。