[英]IntelliJ + groovy DSL: How to exclude files from being compiled by groovy plugin?
我正在开发一个Java Web项目,该项目使用Liquibase groovy DSL来管理数据库更改。 为了本主题,它可以是使用*.groovy
文件作为源的任何其他第三方库。 该项目是用gradle建造的。 在src/main/resources
文件夹下的一个模块( dao-base
)中,我有groovy文件( changelog01.groovy, master_changelog.groovy
等)。 这些文件应该在运行时由liquibase jar加载。
现在,当我尝试在IntelliJ中创建项目时,它会给出以下错误消息:
Groovyc:无法编译Groovy文件:没有为模块'dao-base'定义Groovy库。
我知道groovy插件检测到*.groovy
文件,尝试编译它们并且不出所料地失败。 这些是groovy DSL文件,只能由第三方liquibase解析器加载,我不需要IntelliJ的groovy插件来尝试编译它们。
我设法提出了两个部分解决方案:1。禁用intellij中的groovy插件。 这个解决方案的问题是gradle插件依赖于groovy插件,因此在禁用groovy插件时会自动禁用。 我需要启用gradle插件。 2.排除项目设置中的src/main/resources
文件夹 - > modules - > dao-base
(my module) - > sources选项卡。 这个解决方案的问题是,当我构建项目并部署到tomcat时,资源文件夹中的文件丢失,因为运行时需要文件中的文件,所以当战争加载时我得到文件未找到异常。
我希望有人能为这个问题找到更好的解决方案。
尝试从编译器的资源列表中删除groovy文件后缀:
设置 - >编译器
您是否使用Gradle Idea插件生成IntelliJ项目? 如果是这样,您可以通过gradle将这些groovy文件添加到IntelliJ中的编译器资源列表中,方法是将其添加到build.gradle:
idea {
project {
// customize the .ipr file generation.
ipr {
withXml { xmlProvider ->
def project = xmlProvider.asNode()
// Add appropriate groovy files to the compiler resources. These files will not be compiled by the groovy compiler but will be copied to the classes directory during compilation.
def compilerSettings = project.component.find { it.@name == 'CompilerConfiguration' }
compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/changelog*.groovy'])
compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/master_changelog.groovy'])
}
}
}
}
这很好,因为当您从gradle生成项目时,您不必记住手动执行此操作。
我面临同样的问题。 在成功编译以及执行我的项目之后,我从设置中禁用了groovy插件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.