Java 使生成代码的自定义Gradle任务在IDE导入上运行
因为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生成之前/之后执行以下操作: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
我现在有一个有效的解决方案。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做什么。这样对其他用户和我来说都更容易,如果我稍后再回到项目中,看起来这就是你需要的。我会更新答案。