Я пытаюсь начать играть с использованием Kotlin вместе с Spring 5.0, однако у меня возникают проблемы с компилятором Kotlin, не признающим никакой ссылки на Spring:
[ERROR] Не удалось выполнить цель org.jetbrains.kotlin: kotlin-maven-plugin: 1.1.1: скомпилировать (скомпилировать) проект kotlin-mvc-project: сбой компиляции: сбой компиляции:
[ОШИБКА] (расположение файла): [7,12] Неразрешенная ссылка: springframework
Я использую весеннюю версию Spring 5.0.0.M5 и Kotlin версии 1.1.1 (как для моего компилятора kotlin, так и для плагина IntelliJ Kotlin). Ошибок компиляции, выделенных средой IDE, в любом из моих файлов Kotlin, но запуск компилятора kotlin, похоже, вообще не видит 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>
После помощи @DmitrySenkovich в сужении, что это не проблема с моим pom, я исследовал, что может произойти неправильно в моем локальном хранилище maven. Я проверил банки в моей папке .m2, и они казались немного неправильными и упускали некоторые вещи. Я попробовал вытирать репозиторий maven, но они все время отталкивались назад.
Эта проблема была на корпоративной машине, и после проведения какого-то расследования кажется, что наш maven settings.xml был настроен на выключение зависимостей от компании Artifactory, а не центрального / любого другого репо.
Зависимости должны быть снесены в этот Arifactory из других репозиториев по мере необходимости, но по какой-либо причине (я предполагаю, что из-за того, что они были сняты с репо, отличного от центрального центра), банки для вехи Spring build не были правильно сведены. Удалив их и вручную добавив банки в Artifactory, я смог окончательно решить проблему.