Kotlin编译器返回:未解析的参考:Spring 5.0中的springframework

Plo*_*log 9 spring maven kotlin

我正在尝试使用Kotlin和Spring 5.0一起使用但是我遇到了Kotlin编译器没有识别出对Spring的任何引用的问题:

[错误]无法执行目标org.jetbrains.kotlin:kotlin-maven-plugin:1.1.1:在项目kotlin-mvc-project上编译(编译):编译失败:编译失败:

[错误](文件位置):[7,12]未解决的参考:springframework

我正在使用Spring里程碑版Spring 5.0.0.M5和Kotlin版本1.1.1(在我的kotlin-compiler和IntelliJ Kotlin插件上).IDE在我的任何Kotlin文件中都没有突出显示编译错误,但运行kotlin-compiler似乎根本看不到Spring 5.0.

有没有人有任何想法如何解决这个问题?我正在使用Maven进行这个项目,我附上了我的POM以供参考:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>kotlin-mvc-project</groupId>
<artifactId>kotlin-mvc-project</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <kotlin.version>1.1.1</kotlin.version>
    <spring.version>5.0.0.M5</spring.version>
</properties>

<repositories>
<repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone</url>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
</repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib</artifactId>
        <version>${kotlin.version}</version>
    </dependency>

    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-compiler</artifactId>
        <version>${kotlin.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

</dependencies>

<build>
    <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
    <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
    <plugins>
        <plugin>
            <artifactId>kotlin-maven-plugin</artifactId>
            <groupId>org.jetbrains.kotlin</groupId>
            <version>${kotlin.version}</version>

            <executions>
                <execution>
                    <id>compile</id>
                    <goals> <goal>compile</goal> </goals>
                </execution>

                <execution>
                    <id>test-compile</id>
                    <goals> <goal>test-compile</goal> </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>


</project>
Run Code Online (Sandbox Code Playgroud)

Plo*_*log 2

在@DmitrySenkovich 的帮助下缩小了范围,确定这不是我的 pom 的问题后,我调查了本地 Maven 存储库中可能出现的问题。我检查了 .m2 文件夹中的罐子,它们似乎有点错误并且缺少某些东西。我尝试擦除 Maven 存储库,但它们总是被拉回。

这个问题是在公司机器上发生的,经过一些调查后,我们的 Maven settings.xml 似乎被配置为从公司范围的 Artifactory 中提取依赖项,而不是从 Maven 中心/任何其他存储库中提取依赖项。

依赖项应该根据需要从其他存储库拉入此 Arifactory,但无论出于何种原因(我假设是因为它们是从 Maven Central 以外的存储库拉取的),里程碑 Spring 构建的 jar 没有正确拉取。通过删除这些并手动将 jar 添加到 Artifactory,我最终解决了这个问题。