我正在尝试使用 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/