인프런 커뮤니티 질문&답변

류윤환님의 프로필 이미지
류윤환

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

User Service - 등록

mvn spring-boot:run 실행불가 (꼭 해결해주세요)

작성

·

813

0

찾아보니 비슷한 질문이 있었던 거 같은데 현재 실습환경과 100% 일치하지 않아 도움을 구합니다.

 

실행환경은 다음과 같습니다

인텔리제이 : Build #IU-241.14494.240, built on March 28, 2024

JDK : 17

스프링부트 : 3.2.4

 

아시다 시피 최신 인텔리제이에서는 실습환경으로 제시되는 2.X 버전의 스프링부트 지원이 되지 않습니다.

POM.XML로 강제로 버전을 내리거나 JDK 버전을 내리는 경우 서비스 기동이 제대로 되지 않습니다. 아마 스프링부트 3 버전에서는 JDK 특정 버전 이상을 강제하는 느낌입니다.

 

현재 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>3.2.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>user-serivce</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user-serivce</name>
    <description>user-serivce</description>
    <properties>
        <java.version>17</java.version>
        <spring-cloud.version>2023.0.1</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

명렁어 실행 시 에러는 다음과 같이 발생합니다.

[ERROR] Unknown lifecycle phase ".run.jvmArguments=-Dserver.port=9003". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-vers

ion>]:<goal>. Available lifecycle phases are: pre-clean, clean, post-clean, validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sou

rces, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy. -> [Help 1]

 

동일한 명렁어를 윈도우즈 cmd에서 실행하면 다음과 같습니다.

[WARNING] Error injecting: org.springframework.boot.maven.RunMojo

java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RunMojo not present

at org.eclipse.sisu.space.URLClassSpace.loadClass (URLClassSpace.java:147)

(중략)

Caused by: java.lang.UnsupportedClassVersionError: org/springframework/boot/maven/RunMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

 

본 문제 때문에 강의 진행이 안되고 있습니다.

꼭 해결해 주셨으면 합니다.

 

 

 

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

작업하신 내용의 오류는 Powershell 가 관련이 있는 것 같습니다. Powershell에서는 '-' 이 포함된 옵션을 명령어의 일부로 인식해 버려서 우리가 의도했던 옵션 등의 의미로 사용되지 못하는 경우가 있습니다. 해당 명령어를 Powershell이 아닌 cmd에서 실행하시거나 명령어의 -D 부분부터의 옵션을 " ~ " 로 감싸시거나 ` ~ ` 으로 감싸신 후에 실행해 보시면 정상적으로 실행되실 것 같습니다.

PS C:\work\toy-msa\user-service> mvn spring-boot:run "-Dspring-boot.run.jvmArguments='-Dserver.port=9003'"
PS C:\work\toy-msa\user-service> mvn spring-boot:run `-Dspring-boot.run.jvmArguments='-Dserver.port=9003'`

참고로, Windows Intellij 에서는 Terminal 에서 실행되는 프로그램을 기본적으로 Powershell을 사용하고 있는데, 이것을 다른 것으로 변경해서 사용하실 수 있습니다.

image

감사합니다.

0

터미널이나 cmd 창에서 mvn 명령을 사용하시려면 maven 을 본인 os 맞게 별도 설치하셔야 합니다.

# MAVEN 다운로드

https://maven.apache.org/download.cgi

 

# 이후에는 path 환경변수에 등록 해 주셔야 합니다.

Ubuntu와 CentOS에서는 환경설정을 모든 OS user가 사용할 수 있도록 /etc/profile에 해 주십시오.

$ vi /etc/profile

export MAVEN_HOME=/usr/local/maven

PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin

export PATH

$ source /etc/profile

류윤환님의 프로필 이미지
류윤환
질문자

mvn 명령어 수행이 안되는 것이 아니라, UserServiceApplication 이 기동되지 않는 것이 문제입니다.

 

만약 메이븐이 정상적으로 다운로드가 되지 않았거나 환경변수에 설정되지 않았으면 다음과 같은 명령어가 정상적으로 수행되지 않을 것입니다.

 

image

 

류윤환님의 프로필 이미지
류윤환
질문자

자문자답인데요 인텔리제이에 있는 터미널에선 mvn 파라미터를 정확하게 인식하지 못하는 거 같습니다.

image

윈도우 기본 터미널에서 다음의 명령어로 실행하면 정상적으로 작동합니다.

mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'

image

 

류윤환님의 프로필 이미지
류윤환

작성한 질문수

질문하기