프로그래밍 노트/빌드도구

그래들, 메이븐과 같은 빌드툴이 나오게 된 이유는 무엇일까? 빌드툴에 대한 역사를 찍먹해보고 그래들의 장점을 알아보도록 하자아. 빌드툴이란 무엇인가? 자바 애플리케이션 개발과정을 살펴보면, 반복된 작업들이 있다는 것을 볼 수 있다. 이런 반복된 작업들 (정형화된 작업)을 자동화하기 위한 소프트웨어를 빌드툴 이라 한다. 소스코드(.java)를 컴파일하여 클래스 파일(.class) 파일 생성 코딩 규약에 맞게 작성했는지 확인 코드를 정적으로 해석 테스트를 하고 테스트 결과나 커버리지 측정 결과를 리포트로 출력 Javadoc과 같은 문서를 작성 클래스 파일과 리소스 파일을 패키징하여 압축파일을 만듬(.jar 혹은 .war) 압축 파일을 테스트 혹은 스테이징 환경에 배포 압축 파일을 저장소에 등록 으잉? 이클립..
2021.04.06 - [프로그래밍 노트/빌드도구] - [Gradle] 그레들 빌드시작하기 - 그루비(Groovy) 기본 문법 2021.04.06 - [프로그래밍 노트/빌드도구] - [Gradle] 그레들이란? 그레들 특징, 그레들 vs 메이븐 빌드 스크립트 작성과 실행 그레들과 친해지기 위해서 간단하게 빌드 스크립트를 작성해보자. 특별한 지정이 없는 한 빌드 스크립트의 기본 파일명은 build.gradle 이다. build.gradle task hello{ // hello 라는 태스크 정의 println "Hello Gradle World!!" // {} 안에 처리내용 기술 } $gradle hello 를 실행하면, 빌드 결과를 확인할 수 있다. $ gradle hello :hello // hello ..
그레들에서 빌드를 하려면 먼저 빌드 스크립트를 작성해야 한다. 그레들 문법(DSL)에 따라 텍스트 파일로 작성하기 때문에 별도의 IDE는 필요없다. 그루비 특유의 문법 그레들의 빌드 스크립트는 그루비 스크립트다. 하지만 그레들이 제공하는 DSL 덕분에 그루비를 거의 의식할 필요 없이 빌드 스크립트를 작성할 수 있다. 하지만..!! 그루비 특유의 문법을 모르면 그레들의 빌드 스크립트를 읽거나 작성할 때 어려움이 있을 수 있다. 자주 사용되는 것만 정리해보자. 문자열 크게 두가지가 존재 작은따옴표(') : 자바의 문자열과 거의 같은 용도 큰따옴표(") : 문자열 내부에 $ 기호로 동적인 내용을 넣을 수 있다. 내부적으로 그루비의 GString 클래스가 사용된다. // 작은 따옴표 String name = '..
Apache Maven Resource Plugin (https://maven.apache.org/plugins/maven-resources-plugin/) The Resources Plugin handles the copying of project resources to the output directory. maven-resources-plugin copy-resources validate copy-resources ${basedir}/target/dockerfile src/main/docker true 패키징시 리소스파일을 원하는 경로로 배포할 수 있다.
메이븐은 하나의 프로젝트에서 여러 모듈을 관리할 수 있는 모듈 기능을 지원한다. (한 프로젝트가 여러 모듈을 가지면서 빌드를 한 번에 진행하는 방법) 여기서 필요한 개념인 아래의 3가지 기능을 알아보자 상속(inheritance) 집합(aggregation) 의존 관계(dependency) 상속 메이븐 설정파일이 기본으로 최상위 POM을 상속하듯이 프로젝트에서도 공통으로 사용하는 설정은 공통 POM파일을 만들어 관리하고 하위 모듈에서 이POM을 상속할 수 있다. 메이븐에서 상속기능을 사용하려면 부모POM에서 엘리먼트를 설정해야 한다. parent POM.xml 4.0.0 com.corn diary pom 1.0-SNAPSHOT .... child POM.xml ... com.corn diary 1.0-S..
빌드 이식성 이식성(portability)의 핵심은 특별한 수정이나 변경 없이도 다양한 환경에 배포하고 운영하는 것이 가능해야 한다는 것을 뜻한다. 빌드 이식성은 서로 다른 환경에서 추가적인 설정 파일의 변경을 하지 않더라도 빌드가 가능한 환경을 만드는 것이다. ex) 운영체제(OS)가 다른 환경(윈도우, 리눅스, 맥 등) JDK 버전이 다른 환경에서도 추가 설정 없이 가능한 애플리케이션을 빌드할 수 있어야 하는 것을 의미한다. 대부분 프로젝트를 하다보면 개발 환경(로컬, 개발, 운영 서버)에 따라 설정이 달라질 때가 있기 때문에 개발 환경마다 다른 빌드 스크립트를 만들지 않으면서 하나의 빌드 스크립트에서 서로 다른 설정이 가능해야 한다. 데이터베이스 설정 로깅 설정 프레임워크 관련 설정 서버 설정 컴파..
속성 메이븐은 설정 파일에서 발생하는 중복 설정을 제거하기 위하여 속성 ( 엘리먼트)을 정의하고 설정 파일 전체에서 사용할 수 있다. 예를 들어 스트럿츠2, 스프링 프레임워크의 의존 관계 중복을 제거하려면 다음과 같이 설정할 수 있다. 2.1.8 3.0.1.RELEASE org.springframework spring-core ${spring.version} org.apache.struts struts2-core ${struts2.version} 엘리먼트에서 value 같은 형태로 정의 한후 ${property.name} 으로 접근이 가능하다. (개발자 정의 속성) 이 외에도 메이븐은 미리 예약되어 있는 속성이 있는데, pom/project 속성, settings 속성, 환경 변수 속성, 자바 시스템 속..
의존성 전이 메이븐에서 디펜던시가 걸려있는 라이브러리들은 그 라이브러리와 의존관계가 있는 라이브러리를 모두 다운받는다. 예를 들어 pom.xml에 junit라이브러리를 명시하였을 때, junit 프로젝트의 pom.xml dependency에 기술된 모든 라이브러리를 같이 다운받게된다. (junit에 필요한 라이브러리들을 같이 받아온다.) 메이븐은 의존성 전이에 대한 설정 변경을 지원한다. 의존성 중개(dependency mediation) 버전이 다른 두 개의 라이브러리가 의존 관계에 있다면 메이븐은 더 가까운 의존 관계에 있는 pom 설정 버전과 의존 관계를 가진다. A->B->C->D 2.0 버전, A->E->D 1.0 버전의 의존관계가 있을 경우, A프로젝트는 D 1.0 버전과 의존 관계를 가진다...
의존 라이브러리의 적용 스코프 메이븐은 사용하는 라이브러리 성격에 따라 스코프를 지정할 수 있다. Junit 은 테스트시에만 필요하고 실제 배포할 때는 필요없는 라이브러리이다. 각 라이브러리에 대한 스코프는 아래에 엘리먼트로 설정할 수 있다. Junit 라이브러리를 테스트 스코프에서만 의존 관계를 갖도록 설정할 수 있다. junit junit 4.7 test 6가지 스코프 설명 compile : 기본 스코프, 컴파일 및 배포할 때 같이 제공해야 하는 라이브러리 provided : 예를 들어 servlet.jar는 서블릿 컨테이너에서 제공하므로 컴파일 시점에는 필요하지만, 애플리케이션을 배포할 때 포함할 필요는 없다. (컴파일시점에사용하고 배포시점에는 포함 x,..
메이븐 의존 라이브러리 관리 메이븐 의존관리는 태그로 관리되며, 아래에는 여러개의 가 존재한다. 아래는 Junit 3.8.1 버전과 의존관계가 있다고 pom.xml에 설정한 것이다. junit junit 3.8.1 test 이 dependency를 설정한 후의 과정은 아래와 같다. 메이븐 중앙 저장소에 JUnit 3.8.1 버전이 있는지 확인 하고 버전이 있다면 groupId/artifactId/version에 있는 ${artifactId}-${​version}.jar 파일을 다운로드 한다. https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar USER_HOME/.m2/repo..
깡냉쓰
'프로그래밍 노트/빌드도구' 카테고리의 글 목록