我启动了一个使用Gradle(版本3.4.1)和IntelliJ的新Java项目。我在命令行使用gradle init
,然后使用默认包装器将项目导入IntelliJ(建议根据IDE使用)。
我在build.gradle
文件中有以下内容:
jar {
manifest {
attributes 'Main-Class': "com.testerstories.textadv.Voxam"
}
}
然而,attributes
行提供了一致的警告:
'attributes' cannot be applied to '(['Main-Class':groovy.lang.GString])'
问题似乎是"不兼容的类型。"但它不清楚什么是"属性"正在被应用于"。我会假设manifest
块。但那么......它要我完全做什么?
我意识到这是一个警告,我可以忽略它。我也意识到我可以阻止检查。但是在所有关于这个的讨论中,我意识到有一些(尽管大多数人似乎都在处理&groovy.lang.Closure&#39;),我还没有找到任何明确的< / em>非常简单地说明实际问题是什么以及如何解决它。我说&#34;解决它&#34;与(1)只是掩盖它或(2)假装它不存在相反。
我担心看起来非常基本的Gradle使用情况无法识别,或者表明其中一个支持Java的核心IDE存在问题。
最后,我要注意,在添加到StackOverflow空间之前,我曾向JetBrains提出过支持,他们的回答是确保我的.iml
文件指示&#34; JAVA_MODULE&#34;而不是&#34; WEB_MODULE&#34;,我确认了。他们的下一个答案是我需要提供(直接引用)一个&#34;命名空间来解决歧义,这应该解决错误的类型错误。&#34;具有讽刺意味的是,也许这个回复需要一些模糊的解决方案,但我没有得到进一步的回应。
更新(与上述相关;但有不同的背景)
如果我在Gradle中使用这样的东西:
systemProperties(System.getProperties())
我告诉getProperties()
是一个模棱两可的方法调用。最初我认为这与我原来的问题无关,但是IntelliJ检查员报告说这也是一个不兼容类型的问题。
我达成的结论 - 以及可能的回答&#34; - Gradle和IntelliJ是不是在各种环境中都不能很好地互相玩耍。