我有一个带有混合Java和Scala源的项目,遵循this page上的说明,该命令在从命令行运行Maven时有效。
然而,使用像IDEA和Netbeans这样的IDE的人在使用Java代码解析Scala类时遇到了问题(但不是相反,这要归功于可用的漂亮插件)。有办法解决它们吗?
注意:我可以从命令行构建就好了; Scala类在Java类之前编译。我只是希望IDE能够识别这一点。我可以为Scala类创建一个单独的模块来解决这个问题,但对我来说似乎有些过分。
注意:在IDEA中,我有“首先编译Scala类”,但仍然无法解决问题。
更新:以下是我正在使用的版本: scala-library 2.8.0 maven-scala-plugin 2.12 IDEA 9.0 Ultimate带有来自插件回购的最新scala插件 Netbeans 6.9 with scala nightly plugin
答案 0 :(得分:1)
您使用的是哪些版本(Scala,IDE,Scala插件)?
我在9个月前开始使用Scala 2.7时遇到了同样的问题。虽然我最近没有尝试过混合项目,但我的理解是这些问题将在Scala 2.8中得到解决。使用Scala 2.8尝试Eclipse 3.5.2可能是值得的 - 我的印象是Eclipse插件跟上2.8的变化比其他IDE插件更好(但我可能错了)。
答案 1 :(得分:1)
我一直试图弄清楚如何使用Eclipse Indigo + Scala IDE 2.9,m2eclipse,scala 2.9 + jdk1.7混合使用。
我发现使用maven eclipse插件(mvn eclipse:eclipse)并将项目作为eclipse项目(不是maven项目)导入,并使用以下自定义清理错误标记。
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</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/scala</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/scala</source>
</sources>
</configuration>
</execution>
</executions
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<projectnatures>
<projectnature>org.scala-ide.sdt.core.scalanature</projectnature>
<projectnature>org.eclipse.jdt.core.javanature</projectnature>
</projectnatures>
<buildcommands>
<buildcommand>org.scala-ide.sdt.core.scalabuilder</buildcommand>
</buildcommands>
<classpathContainers>
<classpathContainer>org.scala-ide.sdt.launching.SCALA_CONTAINER"</classpathContainer>
<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
</classpathContainers>
<excludes>
<exclude>org.scala-lang:scala-library</exclude>
<exclude>org.scala-lang:scala-compiler</exclude>
</excludes>
<sourceIncludes>
<sourceInclude>**/*.scala</sourceInclude>
<sourceInclude>**/*.java</sourceInclude>
</sourceIncludes>
</configuration>
</plugin>