이 가이드에서는 Maven을 사용하여 간단한 Java 프로젝트를 빌드하는 과정을 안내합니다.
시간을 제공하는 애플리케이션을 만든 다음 Maven을 사용하여 빌드합니다.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
먼저 Maven을 빌드할 Java 프로젝트를 설정해야 합니다. Maven에 계속 집중하려면 지금은 프로젝트를 최대한 단순하게 만드세요. 선택한 프로젝트 폴더에 이 구조를 만듭니다.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
src/main/java/hello
디렉터리 내에서 원하는 Java 클래스를 만들 수 있습니다. 이 가이드의 나머지 부분과의 일관성을 유지하려면 HelloWorld.java
및 Greeter.java
두 클래스를 만듭니다.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
이제 Maven을 사용하여 빌드할 프로젝트가 준비되었으므로 다음 단계는 Maven을 설치하는 것입니다.
Maven은 https://maven.apache.org/download.cgi에서 zip 파일로 다운로드할 수 있습니다. 바이너리만 필요하므로 apache-maven- {version} -bin.zip 또는 apache-maven- {version} -bin.tar.gz에 대한 링크를 찾으세요.
zip 파일을 다운로드한 후 컴퓨터에 압축을 풀어주세요. 그런 다음 bin 폴더를 경로에 추가하십시오.
Maven 설치를 테스트하려면 명령줄에서 mvn
실행하세요.
mvn -v
모든 것이 순조롭게 진행되면 Maven 설치에 대한 몇 가지 정보가 표시됩니다. 다음과 비슷해 보이지만 약간 다를 수도 있습니다.
아파치 메이븐 3.3.9(bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven 홈: /home/dsyer/Programs/apache-maven Java 버전: 1.8.0_152, 공급업체: Azul Systems, Inc. Java 홈: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre 기본 로케일: en_GB, 플랫폼 인코딩: UTF-8 OS 이름: "linux", 버전: "4.15.0-36-generic", 아치: "amd64", 제품군: "unix"
축하해요! 이제 Maven이 설치되었습니다.
정보: 개발자가 올바른 Maven 버전을 사용하거나 전혀 설치하지 않도록 Maven 래퍼를 사용하는 것을 고려할 수 있습니다. Spring Initializr에서 다운로드한 프로젝트에는 래퍼가 포함되어 있습니다. mvn
대신 실행하는 프로젝트의 최상위 수준에 mvnw
스크립트로 표시됩니다.
이제 Maven이 설치되었으므로 Maven 프로젝트 정의를 생성해야 합니다. Maven 프로젝트는 pom.xml 이라는 XML 파일로 정의됩니다. 무엇보다도 이 파일은 프로젝트 이름, 버전 및 외부 라이브러리에 대한 종속성을 제공합니다.
프로젝트 루트에 pom.xml 이라는 파일을 생성하고(즉, src
폴더 옆에 배치) 다음 내용을 제공합니다.
pom.xml
link:initial/pom.xml[role=include]
선택적
요소를 제외하면 이는 Java 프로젝트를 빌드하는 데 필요한 가장 간단한 pom.xml 파일입니다. 여기에는 프로젝트 구성에 대한 다음 세부정보가 포함됩니다.
. POM 모델 버전(항상 4.0.0).
. 프로젝트가 속한 그룹 또는 조직입니다. 종종 거꾸로 된 도메인 이름으로 표현됩니다.
. 프로젝트의 라이브러리 아티팩트에 지정될 이름(예: 해당 JAR 또는 WAR 파일의 이름)입니다.
. 빌드 중인 프로젝트의 버전입니다.
- 프로젝트를 패키징하는 방법입니다. JAR 파일 패키징의 경우 기본값은 "jar"입니다. WAR 파일 패키징에는 "war"를 사용하십시오.
메모 | 버전 관리 체계를 선택할 때 Spring은 의미적 버전 관리 접근 방식을 권장합니다. |
이 시점에서 최소한이지만 유능한 Maven 프로젝트가 정의되었습니다.
이제 Maven이 프로젝트를 빌드할 준비가 되었습니다. 이제 Maven을 사용하여 프로젝트 코드를 컴파일하고, 라이브러리 패키지(예: JAR 파일)를 생성하고, 로컬 Maven 종속성 저장소에 라이브러리를 설치하는 목표를 포함하여 여러 빌드 수명 주기 목표를 실행할 수 있습니다.
빌드를 시험해 보려면 명령줄에서 다음을 실행하세요.
mvn 컴파일
그러면 Maven이 실행되어 컴파일 목표를 실행하도록 알려줍니다. 완료되면 target/classes 디렉터리에서 컴파일된 .class 파일을 찾아야 합니다.
.class 파일을 직접 배포하거나 작업할 가능성은 거의 없으므로 대신 패키지 목표를 실행하는 것이 좋습니다.
mvn 패키지
패키지 목표는 Java 코드를 컴파일하고, 테스트를 실행하고, 대상 디렉터리 내의 JAR 파일에 코드를 패키징하여 완료합니다. JAR 파일의 이름은 프로젝트의
및
기반으로 합니다. 예를 들어 이전의 최소 pom.xml 파일이 있는 경우 JAR 파일 이름은 gs-maven-0.1.0.jar 입니다.
JAR 파일을 실행하려면 다음을 실행하세요.
자바 -jar 대상/gs-maven-0.1.0.jar
메모 | 값을 "jar"에서 "war"로 변경한 경우 결과는 JAR 파일 대신 대상 디렉터리 내의 WAR 파일이 됩니다. |
Maven은 또한 프로젝트 종속성에 빠르게 액세스할 수 있도록 로컬 시스템(일반적으로 홈 디렉터리의 .m2/repository 디렉터리)에 종속성 저장소를 유지 관리합니다. 프로젝트의 JAR 파일을 해당 로컬 저장소에 설치하려면 install
목표를 호출해야 합니다.
mvn 설치
설치 목표는 프로젝트의 코드를 컴파일, 테스트 및 패키징한 다음 이를 로컬 종속성 저장소에 복사하여 다른 프로젝트가 이를 종속성으로 참조할 수 있도록 준비합니다.
종속성에 대해 말하자면 이제 Maven 빌드에서 종속성을 선언할 차례입니다.
간단한 Hello World 샘플은 완전히 독립적이며 추가 라이브러리에 의존하지 않습니다. 그러나 대부분의 애플리케이션은 일반적이고 복잡한 기능을 처리하기 위해 외부 라이브러리에 의존합니다.
예를 들어, "Hello World!"라고 말하는 것 외에도 응용 프로그램이 현재 날짜와 시간을 인쇄하기를 원한다고 가정합니다. 기본 Java 라이브러리의 날짜 및 시간 기능을 사용할 수 있지만 Joda Time 라이브러리를 사용하면 작업을 더욱 흥미롭게 만들 수 있습니다.
먼저 HelloWorld.java를 다음과 같이 변경합니다.
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
여기서 HelloWorld
Joda Time의 LocalTime
클래스를 사용하여 현재 시간을 가져오고 인쇄합니다.
지금 프로젝트를 빌드하기 위해 mvn compile
실행한다면 빌드에서 Joda Time을 컴파일 종속성으로 선언하지 않았기 때문에 빌드가 실패할 것입니다. pom.xml (
요소 내)에 다음 줄을 추가하여 이 문제를 해결할 수 있습니다.
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
이 XML 블록은 프로젝트에 대한 종속성 목록을 선언합니다. 특히 Joda Time 라이브러리에 대한 단일 종속성을 선언합니다.
요소 내에서 종속성 좌표는 세 가지 하위 요소로 정의됩니다.
- 종속성이 속한 그룹 또는 조직입니다.
- 필수 라이브러리입니다.
- 필요한 라이브러리의 특정 버전입니다.
기본적으로 모든 종속성은 compile
종속성으로 범위가 지정됩니다. 즉, 컴파일 타임에 사용할 수 있어야 합니다(WAR의 /WEB-INF/libs 폴더를 포함하여 WAR 파일을 빌드하는 경우). 또한
요소를 지정하여 다음 범위 중 하나를 지정할 수 있습니다.
provided
- 프로젝트 코드를 컴파일하는 데 필요하지만 런타임 시 코드를 실행하는 컨테이너(예: Java Servlet API)에 의해 제공되는 종속성입니다.
test
- 테스트를 컴파일하고 실행하는 데 사용되지만 프로젝트의 런타임 코드를 빌드하거나 실행하는 데는 필요하지 않은 종속성입니다.
이제 mvn compile
또는 mvn package
실행하면 Maven은 Maven Central 저장소에서 Joda Time 종속성을 해결해야 하며 빌드가 성공합니다.
먼저 테스트 범위에서 JUnit을 pom.xml에 종속성으로 추가합니다.
link:complete/pom.xml[role=include]
그런 다음 다음과 같은 테스트 케이스를 만듭니다.
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven은 "surefire"라는 플러그인을 사용하여 단위 테스트를 실행합니다. 이 플러그인의 기본 구성은 *Test
와 일치하는 이름으로 src/test/java
의 모든 클래스를 컴파일하고 실행합니다. 다음과 같이 명령줄에서 테스트를 실행할 수 있습니다.
mvn 테스트
또는 위에서 이미 보여드린 것처럼 mvn install
단계를 사용하세요("test"가 "install"의 단계로 포함되는 수명 주기 정의가 있습니다).
완성된 pom.xml
파일은 다음과 같습니다.
pom.xml
link:complete/pom.xml[role=include]
메모 | 완성된 pom.xml 파일은 JAR 파일을 실행 가능하게 만드는 간단한 편의를 위해 Maven Shade Plugin을 사용합니다. 이 가이드의 초점은 이 특정 플러그인을 사용하는 것이 아니라 Maven을 시작하는 것입니다. |
축하해요! Java 프로젝트 빌드를 위한 간단하면서도 효과적인 Maven 프로젝트 정의를 만들었습니다.
다음 가이드도 도움이 될 수 있습니다.
Gradle을 사용하여 Java 프로젝트 빌드
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc