Maven无法识别Java项目中的某些Kotlin类

时间:2019-04-27 00:20:11

标签: java maven kotlin

我有一个Java项目,该项目在Kotlin代码中合并了一些类。实际上有两个Kotlin文件,每个文件位于不同的文件夹中,并且每个文件包都不同。

进行mvn clean package时,可以识别Kotlin文件A并将其编译到项目中,但是不能识别Kotlin文件B。

奇怪的是,B是在较早版本中编译的,但是我将一些Groovy文件转换为Java以避免使用Babel。这些新的Java文件引用了B中的类,正是它们的编译产生了错误。

我已经检查并仔细检查了包裹名称。为了查看Maven是否注意到B的文件夹,我什至将B中的数据类之一转换为Java,并将其保留在同一文件夹中。突然那个班级被认可了。

这是怎么回事?我有POM问题吗?

1 个答案:

答案 0 :(得分:0)

我需要在Kotlin插件的部分下,将以下内容添加到我的POM中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
        <!-- Replacing default-compile as it is treated specially by maven -->
        <execution>
            <id>default-compile</id>
            <phase>none</phase>
        </execution>
        <!-- Replacing default-testCompile as it is treated specially by maven -->
        <execution>
            <id>default-testCompile</id>
            <phase>none</phase>
        </execution>
        <execution>
            <id>java-compile</id>
            <phase>compile</phase>
            <goals> <goal>compile</goal> </goals>
        </execution>
        <execution>
            <id>java-test-compile</id>
            <phase>test-compile</phase>
            <goals> <goal>testCompile</goal> </goals>
        </execution>
    </executions>
</plugin>

这是根据文档here来完成的。