LeeDiculous
article thumbnail

빌드 관리 도구란?

프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드 해주는 도구이다.

소스 코드를 컴파일, 테스트, 정적 분석 등을 하여 실행 가능한 앱으로 빌드 해준다.

프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업을 진행해 준다.

자바의 대표적인 빌드 도구: Ant, Maven, Gradle


메이븐(Maven)

자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발되었다.

프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리한다.

참조한 외부 라이브러리에 연관된 다른 라이브러리도 자동으로 관리된다.

<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.28</version>
		</dependency>
...​

메이븐을 사용하는 이유

기존에 사용하던 Ant는 빌드의 기능만 가지고 있었다.

그래서 자동으로 라이브러리를 관리해 주는 기능이 추가된 Maven을 사용하게 된 것이다.

다운로드해 사용하던 라이브러리에 변동 사항이 있으면 자동으로 업데이트하여 적용된다.


메이븐 대표 태그 설명

  • modelVersion : maven의 버전을 의미
  • groupId : 프로젝트 그룹 id를 뜻하며, 일반적으로 대표하는 사이트 도메인을 역순으로 적어 사용
  • artifactId : groupId 외에 다른 프로젝트와는 구분될 수 있는 프로젝트의 Id를 작성
  • version : 프로젝트의 버전을 의미하며 개발 단계에 따라 구분하여 작성
  • name : 프로젝트의 이름
  • description : 해당 프로젝트의 간략한 설명을 작성
  • properties : pom.xml 파일 내에서 빈번하게 사용되는 중복 상수를 정의하는 영역. 해당 영역의 상수를 사용하기 위해서는 ${태그명} 의 형태로 사용하면 된다.
  • dependendies : 해당 프로젝트에서 의존성을 가지고 사용하는 라이브러리를 정의하는 영역. 각 라이브러리마다 <dependency> 태그를 사용하여 구분한다.
  • build : 프로젝트 빌드와 관련된 정보를 설정하는 영역

그래들(Gradle)

Groovy 스크립트를 활용한 빌드 관리 도구이다.

안드로이드 프로젝트의 표준 빌드 시스템으로 채택.

멀티 프로젝트의 빌드에 최적화하여 설계되었다.

Maven에 비해 더 빠른 처리 속도를 가지고 있다.

Maven에 비해 더 간결한 구성이 가능하다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

그래들 대표 용어 설명

repositories : 라이브러리가 저장된 위치 등 설정

mavenCentral : 기본 Maven Repository

dependencies : 라이브러리 사용을 위한 의존성 설정


그래들과 메이븐 비교

  • Gradle에 비해 Maven이 점유율이 더 높은 상황 (점차 Gradle 점유율 오르는 중이다.)
  • Gradle에 비해 Maven의 성능이 떨어진다.
  • Maven에 비해 Gradle이 대규모 프로젝트에서의 성능이 좋다.
  • Maven : pom.xml --- Gradle : build.gradle
  • Gradle은 설치 없이 사용할 수 있다. (Gradle Wrapper)

'언어 ⏎ > java' 카테고리의 다른 글

XML parsing  (0) 2022.12.29
JSON parsing  (0) 2022.12.29
Optional  (0) 2022.12.29
JUnit 메소드  (0) 2022.12.29
컬렉션 프레임워크  (0) 2022.12.29
profile on loading

Loading...