4

我正在尝试使用 kotlin 和 spring 构建一个多模块 maven 项目。当 kotlin-maven-plugin 运行编译阶段时出现错误。

[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ starter ---
[INFO] Deleting /Users/pnts/IdeaProjects/getyour/base/starter/target
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.6:revision (default) @ starter ---
[INFO] 
[INFO] --- git-commit-id-plugin:2.2.6:revision (get-the-git-infos) @ starter ---
[INFO] 
[INFO] --- kotlin-maven-plugin:1.3.41:compile (compile) @ starter ---
[INFO] Applied plugin: 'spring'
[ERROR] /Users/pnts/IdeaProjects/getyour/base/starter/src/main/kotlin/org/getyour/webdesign/PlainStarter.kt: (6, 9) Unresolved reference: WebsiteEntryPoint
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for parent 0.0.1-SNAPSHOT:
[INFO] 
[INFO] parent ............................................. SUCCESS [  1.178 s]
[INFO] common ............................................. SUCCESS [  0.021 s]
[INFO] platform-api ....................................... SUCCESS [  4.238 s]
[INFO] platform-core ...................................... SUCCESS [  0.215 s]
[INFO] platform-bom ....................................... SUCCESS [  0.012 s]
[INFO] platform-parent .................................... SUCCESS [  0.061 s]
[INFO] starter ............................................ FAILURE [  0.343 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.399 s
[INFO] Finished at: 2019-09-27T08:57:04+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.3.41:compile (compile) on project starter: Compilation failure
[ERROR] /Users/pnts/IdeaProjects/getyour/base/starter/src/main/kotlin/org/getyour/webdesign/PlainStarter.kt:[6,9] Unresolved reference: WebsiteEntryPoint
[ERROR] 
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :starter

有趣的是当我用“mvn clean”清理我的构建并运行它编译的项目并运行spring应用程序时。

春天开始正常

我不知道是什么导致了这个问题。也许我错过了一些东西。

这是我的 poms 和我的项目结构。希望有人可以帮助我。

父 pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/>
    </parent>
    <version>0.0.1-SNAPSHOT</version>

    <artifactId>parent</artifactId>
    <groupId>org.getyour.webdesign</groupId>
    <packaging>pom</packaging>

    <modules>
        <module>common</module>
        <module>starter</module>
    </modules>

    <!-- properties -->
    <properties>
        <kotlin.version>1.3.41</kotlin.version>
        <spring.boot.version>2.1.8.RELEASE</spring.boot.version>
        <java.version>1.8</java.version>
        <main.class>org.getyour.webdesign.WebsiteEntryPoint</main.class>
    </properties>

    <!-- repositories -->
    <repositories>
        <repository>
            <id>maven-central</id>
            <url>http://central.maven.org/maven2/</url>
        </repository>
    </repositories>

    <build>
        <sourceDirectory>src/main/kotlin</sourceDirectory>
        <testSourceDirectory>src/test/kotlin</testSourceDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <!-- Import dependency management from Spring Boot -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring.boot.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring.boot.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <version>${kotlin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>

            <!-- kotlin spring compiler plugin -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <configuration>
                    <mainClass>${main.class}</mainClass>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <goals><goal>compile</goal></goals>
                        <phase>process-sources</phase>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <goals><goal>test-compile</goal></goals>
                        <phase>process-test-sources</phase>
                    </execution>
                </executions>
                <configuration>
                    <args>
                        <arg>-Xjsr305=strict</arg>
                    </args>
                    <compilerPlugins>
                        <plugin>spring</plugin>
                    </compilerPlugins>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jetbrains.kotlin</groupId>
                        <artifactId>kotlin-maven-allopen</artifactId>
                        <version>${kotlin.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.jetbrains.kotlin</groupId>
                        <artifactId>kotlin-stdlib-jdk8</artifactId>
                        <version>${kotlin.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <version>2.2.6</version>
                <executions>
                    <execution>
                        <id>get-the-git-infos</id>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
                    <prefix />
                    <verbose>false</verbose>
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
                    <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties
                    </generateGitPropertiesFilename>
                    <format>properties</format>
                    <gitDescribe>
                        <skip>false</skip>
                        <always>false</always>
                        <dirty>-dirty</dirty>
                    </gitDescribe>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

启动 pom.xml

<?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>
    <parent>
        <artifactId>parent</artifactId>
        <groupId>org.getyour.webdesign</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <version>0.0.1-SNAPSHOT</version>

    <artifactId>starter</artifactId>
    <packaging>jar</packaging>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.getyour.webdesign</groupId>
                <artifactId>platform-bom</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.getyour.webdesign</groupId>
            <artifactId>platform-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
        </dependency>
    </dependencies>

</project>

网站入口点.kt

package org.getyour.webdesign

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

/**
 * Start class of the application
 *
 * @author p.tsivelekidis
 * Created by p.tsivelekidis on 2019-09-20
 */
@SpringBootApplication
class WebsiteEntryPoint {
    companion object {
        fun main(args: Array<String>) {
            runApplication<WebsiteEntryPoint>(*args)
            println("Hello!")
        }
    }
}

PlainStarter.kt

package org.getyour.webdesign

class PlainStarter

    fun main(args: Array<String>) {
        WebsiteEntryPoint.main(args)
    }

这是我的项目结构。请注意,当我运行“mvn clean install”命令时,我得到了这个。

mvn clean install 后的项目结构

当我清理我的项目并运行时,我得到了这个结构。

清理后的项目结构并运行项目

当我运行 mvn clean install 时,它不会创建目标类,因此我猜它找不到我的 WebsiteEntryPoint。

希望有人可以帮助我。非常感谢。

4

1 回答 1

-1

我在 intellij 中编译 kotlin 多模块项目时遇到了同样的问题。命令mvn clean install对未解决的依赖项产生了相同的错误。

正如我所看到的,您的源目录被命名为 kotlin(就像我之前的项目一样)。

将我项目中的源目录重命名为java后,问题就解决了......

于 2020-09-26T20:01:53.583 回答