您不必“取消”您的项目。(尽管我理解建议您这样做的故障排除原因。)我怀疑问题是缓存或索引损坏。转到文件 > 使缓存无效。选择使缓存无效,然后重新启动 IDEA。让 IDEA 重新索引项目。事情应该没问题。如果不是,请检查 1) 您使用的是最新版本的 IDEA (12.1.5) 和 2) 最新版本的 Groovy 插件(文件 > 设置 > [IDE 设置] > 插件)。
当您使用 maven 时,您需要将“groovy”目录标识为 POM 中的附加源目录。如果你不这样做,当 IDEA 重新导入项目时(即重新同步到 POM),它会将groovy
目录作为源删除,因为默认情况下 maven 不认为它是源。你如何做到这一点取决于你使用什么插件。由于不再维护GMaven ,我一直在使用groovy-eclipse-compiler插件。如果您使用该插件,该插件将自动src/main/groovy
作为源包含(只要其中至少有一个 java 或 groovy 文件src/main/java
)。但是,IDEA 不会选择该目录并将其作为源也包含在内。这意味着如果您手动(或 IDEA 自动)运行 maven 重新导入,您的src/main/groovy
目录将被取消标记为源,IDEA 将显示编译错误。您需要指定附加目录。您可以按照 groovy-eclipse-compiler文档的建议使用 build-helper-maven-plugin 来执行此操作。
这是一个工作 Java/Groovy 项目的 POM 的主要内容:
<properties>
<groovy.version>2.1.5</groovy.version>
<groovy-eclipse-compiler.version>2.8.0-01</groovy-eclipse-compiler.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>${groovy-eclipse-compiler.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.1.5-03</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/groovy</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
</dependencies>