maven 11

Maven을 이용한 데비안(*.deb) 패키지 빌드

Maven으로 데비안 패키지를 만들어보자 (http://bcho.tistory.com)조대협애플리케이션 배포CI/CD 빌드 배포 프로세스에서, 컴파일된 애플리케이션을 배포하는 방법은 여러가지가 있다. 빌드된 바이너리를 Ansible과 같은 Configuration management 도구를 이용해서 배포하는 방법이 일반적이지만, 작업이 복잡한 경우에는 많은 스크립트 작업이 필요한 경우가 있다. 보통 애플리케이션 배포는 단순하게 바이너리만을 복사하는 것이 아니라, 이에 필요한 의존성이 있는 패키지 (예를 들어 JDK나 기타 의존되는 라이브러리)를 배포해야 하는 경우도 있고, 경우에 따라서는 의존되는 파일이나 복잡한 디렉토리 구조를 생성해야 하는 경우가 있다. 이를 Ansible과 같은 Configurati..

Bazel 빌드 툴에 대해서.

Bazel 빌드툴 Tensorflow Serving을 살펴보다보니, Serving Server는 C++기반에 gRPC 인터페이스 기반이라는 것을 알았는데,빌드 환경이 bazel이라는 것을 사용한다. 그래서 Bazel이 무엇인가 찾아봤는데. 쉽게 말하면 빌드 툴이다 위키에 설명이 가장 잘나와 있는데, 구글에서 만든 빌드 시스템으로, 구글의 경우 큰 소스코드를 빌드하기 때문에, 이를 위해서 만들어진 빌드 시스템을 오픈소스화 한것으로, 분산 빌드등을 제공하고 빠른 성능을 제공한다. 쉽게 말해서 make,ant,gradle,maven과 같은 빌드 시스템으로 보면 된다.Java,C,C++,Python,Object C등의 언어를 지원한다. https://en.wikipedia.org/wiki/Bazel_(softw..

maven nexus 설치

Nexus 설치 및 Maven 연동조대협 Nexus는 maven에서 사용할 수 있는 가장 널리 사용되는 무료 repository 중의 하나이다. www.sonatype.com 에서 다운로드 받아서 설치할 수 있다. Local에 nexus를 설치하게 되면, 외부로 부터 dependency를 끌어 오는 수고를 덜고, local nexus를 proxy (cache)로 사용함으로써 빠르게 라이브러리들을 끌어 올 수 도 있고, 반대로 개발팀내에서 사용하는 공통 라이브러리들을 local nexus에 배포해서 팀간에 공유할 수 있다. 또한 사용자 계정 지정을 통해서 repository에 대한 접근 정책을 정의할 수 도 있다. Nexus는 repository의 용도와 목적에 따라서 몇 가지로 나눌 수 있는데, 대표적으..

maven repository인 nexus pro에 대한 고급 기능 소개

nexus pro에 대한 고급 기능소개 조대협 (bwcho75@지메일) nexus는 maven repository로 매우 유명한 솔루션이다. 오픈 소스 버전은 maven을 사용하는 경우에는 거의 필수적으로 사용이 된다고 해도 과언이 아니다.nexus의 상용 버전인 nexus pro의 경우 CLM (Component Life-cycle Management) 개념을 도입하여, 접근제어나 컴포넌트에 대한 security 나 license risk등을 관리 통제할 수 있다.이 글에서는 nexus pro에 대한 몇 가지 고급 기능에 대해서 살펴보고, 이를 통해서 컴포넌트(라이브러리)의 관리가 단순한 중앙 집중형 공유만이 아닌 일종의 life cycle 개념이 있다는 것을 이해하도록 해보자 Nexus의 상용 버전인..

maven으로 환경별도 다르게 패키징 하기 & RPM 패키징 #2/2

Plug in 을 통한 maven 빌드 확장 앞글에서 http://bcho.tistory.com/739 maven을 이용한 가장 기본적인 빌드 시나리오에 대해서 살펴보았다. maven은 plug in이라는 기능을 통해서, 여러 기능 들을 추가로 빌드 프로세스내에 추가할 수 있는데, 여기서는 빌드에서 확장하여, 배포 환경 별로 패키징 하는 시나리오를 추가해보기로 한다. 다음과 같은 시나리오를 생각해보자, 빌드에 의해서 생성된 웹 애플리케이션은 내 local PC에서도 돌아가야 하며, 다른 개발자와 협업하는 서버의 개발환경에서도 돌아야 하고, 개발 주기마다 주기적으로 QA환경에서 테스트를 받은 후, staging 환경을 거쳐서 최종적으로 production 환경에 배포 되어야 한다고 가정하자. Java Ve..

maven으로 REST 개발 환경 만들기(Jersey+Spring+MyBatis) #1/2

Maven을 이용한 Jersey + Spring + MyBatis 기반의 REST 애플리케이션 개발 조대협(http://bcho.tistory.com) 빌드 스크립트 설정 개발 환경에서 가장 중요한 빌드에서 부터 알아보자, 우리가 정의하는 빌드는 다음과 같다. "빌드란, 실행 환경에 맞춰서 소스 코드를 실행 가능한 형태의 바이너리로 변경 및 패키징 하는 일련의 과정을 정의한다." 단순하게 소스코드를 바이너리로 바꾸는 컴파일이 될 수 도 있고, 실행에 필요한 각종 리소스 (이미지, 각종 설정 파일등)을 실행 환경(서버 주소등)에 맞춰서 같이 패키징 하는 과정을 이야기 한다. 이 빌드 여러개의 연속된 작업을 포함하기 때문에, 보통 스크립트를 기반으로 수행이 되는데, C/C++의 경우에는 make 기반의 빌드..

Maven pom properties

POM 파일에 등장하는 설정build : 프로젝트 빌드와 관련한 기본적인 소스 디렉토리 구조, 빌드 산출물 디렉토리 구조, 빌드시 사용할 플러그인 등을 관리sourceDirectory : 실제 서비스를 담당하는 자바 소스 코드를 관리하는 디렉토리. 기본 값은 src/main/javatestSourceDirectory : 테스트 소스를 관리하기 위한 디렉토리. 배포시 이 디렉토리는 배포 되지 않는다. 기본값은 src/test/javaoutputDirectory : soruceDiectory의 소스를 컴파일한 결과물이 위치하는 디렉토리. 기본값은 target/classestestOutputDirectory : testSourceDirectory의 소스를 컴파일한 결과물이 위치하는 디렉토리. 기본값은 targ..

Eclipse에서 Spring Maven 개발환경 설정하기

Spring Maven 개발 환경 설정 ※주 : Maven과 Eclipse Juno 버전 이상이 설치된 것을 가정으로 함 Pre-quest이클립스 설치 : Juno 버전 이상 사용Maven 플러그인 설치 : Help > Eclipse Market Place에서 Maven Integration for Eclipse 설치 1. 이클립스 설정 일반 기업의 경우 방화벽이 있는 경우가 많기 때문에 반드시 Proxy 설정 확인하고 시작할것 ① eclipse에 proxy 설정 : Juno 버전 이상 Windows > Preference > Network 메뉴에서 Active Provider를 Mannual로 변경 한후, HTTP와 HTPS proxy entriy에 서버를 등록 ② Maven에서도 해줘야 함 : Jun..

Maven 스터디 노트

Maven의 가장큰 특징은 best practice를 기반으로 하며, 마치 표준 처럼 제공하기 때문에, 모든 개발자가 공통으로 사용할 수 있다.디렉토리 구조, 빌드 배포의 절차등을 템플릿 형태로 제공한다. mvn archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.mycompany.app \ -DartifactId=my-app groupId - 조직이나 도메인을 구별하기 위한 identitifier (mvn install시 이 구조로 source directory가 생성됨)version - 빌드 버전 (artifact 버전)artifactId - project에 의해서 생성되는 파일명 예를들어 jar를 만드..

Hudson을 이용한 빌드 배포 테스트 자동화

Hudson을 이용한 빌드와 테스트의 자동화 2007-04-04 BEA Systems Korea Sr consultant Byungwook Cho (bcho@bea.com) Continuous Integration(점진적 통합,이하 CI)이란, 개발자가 각각 개발한 소스코드를 모아서 한꺼번에 빌드하는 통합 빌드의 과정을 특정 시점이 아니라 매일이나 매주와 같이 아주 잦은 주기로 수행함으로써 통합에서 발생하는 오류와 시간을 줄이기 위한 기법이다. Extreme Programming Community (XP)에서 애자일 방법론의 일부로 Kent Beck에 의해서 고안된 방법으로 다음과 같은 특징을 가지고 있다. 1. CI의 특징 (1) 소스코드 일관성 유지 CI툴을 설정하기 위해서는 기본적으로 소스 관리 시..