젠킨스로 배우는 CI/CD 파이프라인 구축 - 메이븐으로 프로젝트 준비

2025. 7. 6. 21:52·Study/젠킨스로 배우는 CI,CD 파이프라인 구축
다양한 애플리케이션의 빌드 수명 주기 전체를 관리하는 실제 사용법을 알아보자. (여러 종류의 작업을 구성하고 다양한 방식으로 시작하는 방법)
  • 애플리케이션 프로그래밍 인터페이스(API) : 재사용 라이브러리나 웹 애플리케이션, RESTful API 서비스 등 여러 종류의 애플리케이션은 빌드와 절차를 가진다.

📂 메이븐 빌드 도구의 이해 : 자바 API 프로젝트 개발 과정

🔖서드파티 라이브러리 다운로드 (third-party library)

다른 API개발자가 구현한 라이브러리(개발 키트에서 제공하는 API클래스)를 사용하는 것
아티팩트 또는 패키지 레지스트리라고 불리는 별도의 웹 플랫폼을 통해 제공한다.
  • mvnrepository : 자바 API 개발자가 패키지 파일(.jar)을 배포하고, 사용자가 다운로드할 수 있도록 하는 중앙 리포지터리

https://mvnrepository.com/

 

  • npmjs : 자바스크립트를 사용해 빌드된 재사용 노드 패키지를 릴리스하기 위한 패키지 레지스트리

https://www.npmjs.com/

 

npm | Home

Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

🔖 프로젝트에 라이브러리 추가 

다운로드한 라이브러리는 프로젝트 개발자가 작업 중인 레퍼런스 라이브러리에 추가해야 한다.
자바 API프로젝트의 경우, 라이브러리는 프로젝트의 CLASSPATH에 추가된다.
🔖 단위 테스트 케이스 작성

필요한 서드파티와 네이티브 라이브러리가 프로젝트의 빌드 경로에 존재한다면 개발자는 다른 API함수도 작성 할 수 있다.
특정 함수의 구현이 완료되면 단위 테스트 케이스를 작성한다.
🔖 애플리케이션과 단위 테스트 케이스 코드 컴파일

코드를 작성한 다음에 개발자는 API 소스코드와 단위 테스트 케이스를 모두 컴파일 해야 한다.
🔖 테스트 케이스 실행

애플리케이스의 소스코드와 단위 테스트 케이스를 컴파일한 다음에 개발자는 TestNG나 Pytest, NUnit등과 같은 테스트 도구를 사용해 단위 테스트 케이스를 실행해야 한다.
🔖애플리케이션 번들링/패키징

단위 테스트가 완료되고 코드 통합도 끝나면 구현 결과가 라이브러리(.jar) 파일로 패키징한다.
🔖아티팩트 리포지터리로 릴리스 

해당 라이브러리 버전이 생성되면 사용자가 다운로드할 수 있도록 아티팩트 리포지터리로 릴리스한다.

📂  자바 API 프로젝트 빌드 

메이븐 빌드 도구로 자바 API 프로젝트를 빌드하는 법을 설명하자!(이클립스사용)
필수 설치 요소 
- JDK
- 이클립스
  • 이클립스 설치 

https://www.eclipse.org/downloads/

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

1단계 : 이클립스에서 워크스페이스 생성 

2단계 : 메이븐 프로젝트 생성

  • 2-1. Maven Eclipse 플러그인 설치 
    • 메이븐의 명령행 인터페이스를 설치하면 셸프로그램에 명령을 입력하는 식으로 사용할 수 있다. 
    • 이클립스에서 메이븐을 사용하려면 Maven Eclipse 플러그인이 설치돼 있어야 한다.
  • 2-2. 메이븐이 이미 설치되었는지 여부는 Window > Preferences 메뉴를 선책하면 표시되는 Preference창에서 확인할 수 있다.

  • 2-3. 메이븐 프로젝트 생성 : File > New > Maven Project 

  • 2-4. 웹애플리케이션을 개발하는 경우 디렉터리 구조를 생성하는 maven-archetype-webapp이 필요하지만, 지금은 간단한 자바 API프로젝트를 생성하므로 maven-archetype-quick 플러그인을 사용한다.

  • 2-5. 메이븐 프로젝트는 MvnRepository나 넥서스 리포지터리 같은 아티팩트 리포지터리에 관계없이 3개의 매개변수를 사용해서 고유하게 식별된다.
    • GroupId : 프로젝트나 그룹의 소유자
    • Artifact Id : 프로젝트 이름
    • Version : 아티팩트 리포지터리에서 다운로드할 때 사용할 수 있는 특정 릴리스 번호 

📂 메이븐 프로젝트 디렉터리 구조 

메이븐 프로젝트 디렉터리는 프로젝트 생성시 ArtifactId필드에 입력한 이름으로 생성된다. 

🔖 src/main/java

  • 자바 패키지의 기본 소스 코드 디렉터리다. 
  • ArtifactId, GroupId를 갖는 패키지 디렉터리도 생성된다. 
groupId: Pranodayd
artifactId: CaculatorAPI
version: 0.0.1
package: Pranodayd.CaculatorAPI
  • src/main/java 디렉터리에 Pranodayd가 생성되고, 아래에 CaculatorAPI 라는 디렉터리가 생성된다. 
  • 템플릿 데모파일인 App.java가 자동으로 생성되는데 이파일은 사용하지 않으므로 삭제한다

🔖 src/test/java

  • 단위 테스트 케이스 파일들이 위치한다.
  • 단위 테스트 케이스용 템플릿 파일인데 App.java가 자동으로 생성되는데 이파일은 사용하지 않으므로 삭제한다.
명령 프롬프트 또는 터미널을 시작하고, 프로젝트를 만들 위치에 현재 디렉터리를 이동한다. “cd {작업디렉터리}“라고 입력하면 작업 디렉터리로 이동한다. 그러고 다음과 같이 명령을 실행한다.
mvn archetype:generate

성공 후 프로젝트가 생성된 것을 확인할 수가 있다! 

📂 자바 API 프로젝트 코드 파일 

  • API 소스 코드 : src/main/java 아래의 패키지 디렉터리 구조안에 Calculator.java라는 파일을 생성한다.
  • API 단위 테스트 코드 :  src/test/java 아래의 패키지 디렉터리 구조 안에 API에 구현된 모든 함수에 대한 단위 테스트 케이스가 담긴 자바 파일을 생성한다.
💊 TestNG
- 자바환경에서 사용되는 단위테스트 도구 
- @BeforeClass, @AfterClass, @Test, @BeforeMothod 등의 어노테이션으로 작성한 메서드를 사용해 테스트 케이스를 제어하는 단위 테스트 도구이며, 테스트 보고서도 생성할 수 있다.

📂 자바 API프로젝트의 pom.xml 파일

🔖POM (Project Object Model)

  • 메이븐의 pom.xml파일은 모든 메이븐 프로젝트의 핵심이며 특정 프로젝트의 다양한 세부 정보를 정의하는 파일

💡<project>

  • 프로젝트 정보는 <project></project>태그내에 담기며, 프로젝트 식별 정보를 정의한다.

 

💡<properties>

  • <properties></properties> 속성 섹션에서는 JAVA 파일을 컴파일할때 필요한 텍스트 인코딩 및 자바 버전등 속성을 알수있다.

💡 <dependencies>

  •  <dependencies></dependencies>섹션은 서드파티 라이브러리와 해당 라이브러리가 필요한 단계(컴파일 단계, 단위테스트, 애플리케이션 실행단계 등)을 정의한다.

더보기

이번 API 프로젝트에서는 TestNG을 사용할 것이므로, 없다면 이클립스에서 해당 플러그인을 설치한다.

Maven의존성의 사용 범위(scope)를 정의하는 태그로, 해당 라이브러리(TestNG 등)는 단위 테스트 단계에서만 classpath에 포함되고,테스트가 끝나면 classpath에서 제거된다.

위와 같이 scope가 test면 컴파일할 때는 classpath에 포함되지 않으며, mvn test 또는 mvn verify 등 테스트 단계에서만 사용된다. 또한, 빌드된 JAR, WAR에는 포함되지 않는다.

 

메이븐은 정의한 모든 필수 플러그인 및 의존성을 다운로드하는 로컬 리포지터리를 유지한다. 

메이븐이 기본적으로 생성하는 로컬 리포지터리 경로는 ${user.home}/.m2/repository다

해당 로컬 리포지터리의 위치를 변경하려면 settings.xml파일에서 <localRepository>태그에 바꾸려는 로컬리포지터리 위치를 지정한다. 

더보기

settings.xml은 로컬 리포지터리 경로를 비롯한 Maven 설정을 담당하는 파일이며, 해당 경로 위치는 아래에서 확인하면 된다.

 

💡<build>

단계별로 필요한 메이블 플러그인과 애플리케이션의 전체 빌드 수명 주기를 정의한다.

💡빌드 수명 주기 단계와 순서 

1. 정리(Clean)

  • maven-clean-plugin 사용
  • 이전 빌드에서 생성된 컴파일 파일과 패키지 파일 삭제, 새로운 빌드 수명 주기를 실행한다.

2. 리소스 다운로드

  • mvnrepository.com 같은 저장소에서 필요한 라이브러리(의존성)를 다운로드

3. 애플리케이션 소스 코드 컴파일

  • javac를 내부적으로 사용하는 maven-compiler-plugin을 사용해 애플리케이션 소스코드를 컴파일 한다.
  • src/main/java의 .java 파일을 컴파일해서 .class 파일 생성한다.
  • 결과 파일은 target/classes 폴더에 저장된다.

4. 단위 테스트

  • mvn compile:test-compile 단계에서 src/test/java 내 테스트 코드 컴파일하고, 클래스 파일을 $(프로젝트_디렉터리)/target/test-classes 폴더에 저장한다.(컴파일)
  • 메이븐은 maven-surefire-plugin 사용해 JUnit 또는 TestNG로 테스트 케이스 실행하고 단위 테스트 실행한다.

5. 패키징

  • maven-jar-plugin은 $(프로젝트_디렉터리)/target/test-classes 폴더에 생성된(컴파일된) .class 파일등의 컴파일 결과 파일을 .jar파일로 묶는다. 이때, jar 파일은 $(프로젝트_디렉터리)/target/폴더에 생성된다.

6. 릴리스

  • maven-install-plugin 사용하여, 생성된 .jar 파일을 로컬 리포지토리에 설치한다.

📂 CLI를 통해 메이븐을 사용하는 방법

1. 아파치 메이븐 웹 사이트에서 메이븐을 다운로드 

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

 

Download Apache Maven – Maven

Downloading Apache Maven 3.9.10 Apache Maven 3.9.10 is the latest release: it is the recommended version for all users. System Requirements Java Development Kit (JDK) Maven 3.9+ requires JDK 8 or above to execute. It still allows you to build against 1.3 a

maven.apache.org

 

2. 압축을 푼 폴더의 bin 폴더에 "mvn" 파일이 있는 것을 확인 후, 'mvn' 파일을 어디서든 실행시킬 수 있도록 path에 이 폴더(mvn 파일이 있는 bin 폴더)를 추가

3. cmd에서 다음 명령어를 입력하여 다음과 같이 maven 버전정보가 출력되면 정상 설치된 것
(maven이 설치 되지 않은 디렉토리에서, 다음 명령어를 실행하더라도 아래와 같이 버전 정보가 출력되어야 합니다.)



'Study > 젠킨스로 배우는 CI,CD 파이프라인 구축' 카테고리의 다른 글

젠킨스로 배우는 CI/CD 파이프라인 구축 - 넥서스 설치 및 적용  (3) 2025.07.06
젠킨스로 배우는 CI/CD 파이프라인 구축 - 깃과 깃랩  (0) 2025.07.06
젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 작업의 이해  (4) 2025.06.15
젠킨스로 배우는 CI/CD 파이프라인 구축 - 사용자 관리  (0) 2025.06.15
젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 자격증명 관리  (0) 2025.05.25
'Study/젠킨스로 배우는 CI,CD 파이프라인 구축' 카테고리의 다른 글
  • 젠킨스로 배우는 CI/CD 파이프라인 구축 - 넥서스 설치 및 적용
  • 젠킨스로 배우는 CI/CD 파이프라인 구축 - 깃과 깃랩
  • 젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 작업의 이해
  • 젠킨스로 배우는 CI/CD 파이프라인 구축 - 사용자 관리
happy_dev
happy_dev
복사하고 붙여넣기 잘하고 싶어요
  • happy_dev
    happy의 개발일지
    happy_dev
  • 전체
    오늘
    어제
    • 전체 (43)
      • Java (0)
      • React (1)
      • DB (1)
      • Study (41)
        • 친절한 SQL 튜닝 (9)
        • 모던 리액트 Deep Dive (18)
        • 젠킨스로 배우는 CI,CD 파이프라인 구축 (14)
        • Studyd (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    toad
    Jenkins
    oracle
    젠킨스
    DB
    SQL
    조인
    리액트
    인덱스의기본
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
happy_dev
젠킨스로 배우는 CI/CD 파이프라인 구축 - 메이븐으로 프로젝트 준비
상단으로

티스토리툴바