错误:在使用Kotlin编译Java代码时,-source 1.3中不支持泛型
我正在使用Maven和kotlin-maven-plugin
来编译代码。
<plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <source>src/main/kotlin</source> <source>src/main/resources</source> <source>target/generated-sources/jooq-h2</source> </sourceDirs> </configuration> </execution> <execution> <id>test-compile</id> <phase>process-test-sources</phase> <goals> <goal>test-compile</goal> </goals> <configuration> <sourceDirs> <source>src/test/kotlin</source> </sourceDirs> </configuration> </execution> </executions> </plugin>
target/generated-sources/jooq-h2
目录包含Java源文件。 我遵循Kotlin手册和其他人的建议 ,将Kotlin压缩放在<phase>process-sources</phase>
而不是<phase>compile</phase>
。 我(可能是错误的?)假设Kotlin编译器也负责为我编译这些Java文件。
但是,在一些服务器上(例如Jenkins CI),我得到了一些奇怪的编译错误消息,比如:
[ERROR] /var/lib/jenkins/jobs/jooq-build/workspace/jOOQ-examples/jOOQ-kotlin-example/target/generated-sources/jooq-h2/org/jooq/example/db/h2/tables/Author.java:[35,37] error: generics are not supported in -source 1.3
这是为什么?
我注意到,在这个特别的Kotlin项目中,没有指定Java编译器,特别是Java版本。 这导致选择了一些机器默认值,即本地机器的Java 1.8,而Jenkins CI服务器上的Java 1.3。 添加一个明确的引用到maven-compiler-plugin
解决了我的问题:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>