Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven Spring Boot Compilation Failed

I am trying to build spring-boot 2.0.0.RELEASE app using maven which will be deployed to Heroku. I am using IntelliJ for development, but maven gives compilation error with command mvn spring-boot:run / mvc clean install.

My 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

I am also using Kotlin for data classes and Java for other classes. This is my first time building with maven so I am unable to fix this issue.

The project is available at github

like image 676
Adil Iqbal Avatar asked Oct 20 '25 12:10

Adil Iqbal


1 Answers

Your Java code is being compiled before your Kotlin code has been compiled. As a result, the Java code that depends on the Kotlin code fails to compile.

The solution is described in Kotlin's documentation. You need to update your pom so that Kotlin compilation is performed before Java compilation by disabling the default Java compilation goals:

<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>
like image 200
Andy Wilkinson Avatar answered Oct 23 '25 06:10

Andy Wilkinson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!