如何配置scala-maven-plugin仅编译Scala源码?
解决Scala-Maven插件仅编译Scala源码的配置方案
要实现先编译Scala代码、再编译Java代码的两步编译流程,核心是通过配置scala-maven-plugin的源码目录范围,限制其仅处理Scala文件,同时调整编译顺序确保Java代码能依赖Scala的编译结果。具体配置如下:
1. 配置scala-maven-plugin仅编译Scala源码
通过<sourceDirs>参数明确指定插件只扫描src/main/scala目录,覆盖默认的同时包含Java源码目录的设置。同时将插件执行阶段设为process-sources,确保在Java编译前完成Scala代码的编译。
<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>4.8.0</version> <executions> <execution> <id>compile-scala</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>src/main/scala</sourceDir> </sourceDirs> <!-- 如需处理测试Scala代码,可添加以下配置 --> <!-- <testSourceDirs> <testSourceDir>src/test/scala</testSourceDir> </testSourceDirs> --> </configuration> </execution> </executions> </plugin>
2. 配置maven-compiler-plugin仅编译Java源码
指定插件仅扫描.java文件,并确保classpath包含Scala编译后的输出目录,保证Java代码能找到依赖的Scala类。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <executions> <execution> <id>compile-java</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> <configuration> <includes> <include>**/*.java</include> </includes> <classpathElements> <classpathElement>${project.build.outputDirectory}</classpathElement> </classpathElements> </configuration> </execution> </executions> </plugin>
补充说明
- 插件版本可根据项目实际需求调整,确保
scala-maven-plugin版本与项目使用的Scala版本兼容。 - 若需处理测试代码,可在两个插件中分别添加
testCompile的执行配置,逻辑与主代码编译一致。
内容的提问来源于stack exchange,提问作者diziaq
相关产品推荐
相关产品推荐

