Maven Spring Boot 编译失败

标签 maven spring-boot heroku

我正在尝试使用 maven 构建 spring-boot 2.0.0.RELEASE 应用程序,该应用程序将部署到 Heroku。 我正在使用 IntelliJ 进行开发,但是 maven 使用命令 mvn spring-boot:run/mvc clean install 给出编译错误。

我的pom.xml

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

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/>
</parent>

<groupId>com.hms</groupId>
<artifactId>Hyatt</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>Hyatt</name>

<properties>
    <springsecurity.version>5.0.3.RELEASE</springsecurity.version>

    <java.version>1.8</java.version>
    <kotlin.version>1.2.31</kotlin.version>

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>2.4.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- Heroku -->
    <dependency>
        <groupId>com.cloudinary</groupId>
        <artifactId>cloudinary-http44</artifactId>
        <version>1.18.0</version>
    </dependency>


    <!-- Spring -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-jdbc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.15.Final</version>
    </dependency>

    <!-- Web Server -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>


    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${springsecurity.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${springsecurity.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${springsecurity.version}</version>
    </dependency>


    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.4.0</version>
        <type>jar</type>
    </dependency>


    <!--Kotlin-->
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-reflect</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-test</artifactId>
        <version>${kotlin.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-js</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>exec</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                        <goal>js</goal>
                    </goals>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                        <goal>test-js</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <jvmTarget>1.8</jvmTarget>
            </configuration>
        </plugin>
    </plugins>
    <finalName>Hyatt</finalName>
</build>

<repositories>
    <repository>
        <id>spring-repo</id>
        <name>Spring Repository</name>
        <url>https://repo.spring.io/release</url>
    </repository>

    <repository>
        <id>spring-milestone</id>
        <name>Spring Milestones</name>
        <url>http://repo.spring.io/libs-milestone</url>
    </repository>

    <repository>
        <id>spring-snapshot</id>
        <name>Spring Snapshot Repository</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

[INFO] Building Hyatt 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> spring-boot-maven-plugin:2.0.0.RELEASE:run (default-cli) > test-compile @ Hyatt >>>
[INFO] 
[INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ Hyatt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ Hyatt ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 25 source files to /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[4,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[5,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[6,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[7,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/UserService.java:[4,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/UserService.java:[5,26] package com.hms.repository does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/RoomService.java:[4,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/RoomService.java:[5,26] package com.hms.repository does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/BookingService.java:[3,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/BookingService.java:[4,26] package com.hms.repository does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/RoomTypeService.java:[3,21] package com.hms.model does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/service/RoomTypeService.java:[4,26] package com.hms.repository does not exist
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[157,51] cannot find symbol
  symbol:   class Booking
  location: class com.hms.controller.HotelController
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/HotelController.java:[190,17] cannot find symbol
  symbol:   class RoomType
  location: class com.hms.controller.HotelController
[ERROR] /home/adil/Idea Projects/Hotel-Management-System-Course-Project-/src/main/java/com/hms/controller/AdminController.java:[95,45] cannot find symbol
[ERROR] symbol:   class User
[ERROR] location: class com.hms.controller.AdminController
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project Hyatt: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1161)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 24 more

我还使用 Kotlin 处理数据类,使用 Java 处理其他类。 这是我第一次使用 maven 构建,所以我无法解决这个问题。

该项目可通过 github 获取

最佳答案

在编译 Kotlin 代码之前,先编译 Java 代码。导致依赖Kotlin代码的Java代码无法编译。

解决方案是 described in Kotlin's documentation 。您需要更新您的 pom,以便通过禁用默认的 Java 编译目标,在 Java 编译之前执行 Kotlin 编译:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <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>
    </plugins>
</build>

关于Maven Spring Boot 编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673657/

相关文章:

heroku - 将 sequelize-cli 应用程序部署到 heroku DATABASE_URL 问题

ruby-on-rails - 如何在Heroku中访问数据库

javascript - 不支持请求方法 'PUT'

Maven、Spring-boot - 导入 javax.validation 无法解析

spring - 如何使用 Spring Boot 自动重定向到 https

git - 在应用程序中反射(reflect) Heroku 推送版本

maven - 仅在子 POM 上执行 maven 程序集插件

scala - NoClassDefFound错误: org/apache/spark/sql/SparkSession$ while running spark source code locally

Java POI使用Maven资源过滤器时出现InvalidOperationException

java - 在 Ubuntu 上从 CMD 安装 Groovy 后未链接的 java jar