我是Groovy和Gradle的新手。我通常也不会使用XML做很多事情。 我遇到的问题是我们的集成测试没有被标记为测试源,这会导致我们的构建出现问题。据我所知,他们在Gradle中正确完成。好的,现在是一些代码上下文。这是我们有问题的* .iml文件之一的示例:
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":project:projects:chicken:integrationTest" external.linked.project.path="$MODULE_DIR$/../../../../../project/projects/chicken" external.root.project.path="$MODULE_DIR$/../../../../.." external.system.id="GRADLE" external.system.module.group="eas.project.ouboundnmanagement-project" external.system.module.type="sourceSet" external.system.module.version="6.8.0-SNAPSHOT" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/../../../../../project/projects/chicken/build/classes/it" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/integrationTest">
<sourceFolder url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/integrationTest/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/integrationTest/resources" type="java-resource" />
</content>
<content url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/it">
<sourceFolder url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/it/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../../../project/projects/chicken/src/it/resources" type="java-resource" />
...
出于某种原因,IntelliJ IDE坚持额外的内容根。它与任务名称integrationTest
有关,而在所有其他情况下我们称之为it
。例如,源目录是src/it/java
。所以需要删除。另外,对于正确的,我们需要将isTestSource
更改为true
,我认为我们还需要将type="java-resource"
更改为type="test-resource"
或type="java-test-resource"
。
到目前为止,我已尝试过:
idea {
module {
iml {
withXml { xmlProvider -> // Get root node.
def moduleNode = xmlProvider.asNode()
def contents = moduleNode.findAll { node -> node.name == 'content' }
println "####### $contents"
}
}
}
}
以上打印#########[]
因此不太有用或信息丰富。
可能有更好的方法,但有一种可能性是获取所有<content...>
个节点的集合。迭代它并删除URL属性以'integrationTest'
结尾的那个。对于任何具有以it
结尾的URL,检索sourceFolder
个元素并设置属性{{1}分别和isTestSource
。
问题在于我无法弄清楚要做出什么样的调用才能实现这一目标。 IDE通常不会像往常一样告诉我可能的调用是什么,这对我来说没有帮助。
[更新]我现在有代码修复了问题,但IntellJ无法识别已更改的* .iml&#39; s。在更新到2016.1.3之前。
所以我的集成测试源集现在看起来像&#34;
type
答案 0 :(得分:0)
如果您链接到Gradle,这将不起作用。此外,还有一个错误会阻止集成测试被正确标记。请投票支持。