2019/03

속성 메이븐은 설정 파일에서 발생하는 중복 설정을 제거하기 위하여 속성 ( 엘리먼트)을 정의하고 설정 파일 전체에서 사용할 수 있다. 예를 들어 스트럿츠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..
메이븐 저장소 메이븐 저장소는 세 가지로 나눌 수 있다. 중앙 저장소 원격 저장소 로컬 저장소 중앙 저장소 : 오픈 소스 라이브러리, 메이븐 플러그인, 메이븐 아키타입을 관리하는 저장소. 메이븐 2.0의 중앙 저장소의 URL은 http://repo1.maven.org/maven2/ 이다. 중앙 저장소는 개발자가 임의로 라이브러리를 배포할 수 없다. 원격 저장소 : 중앙 저장소에 없는 라이브러리를 한 곳에 모아두기 위하여 별도의 메이븐 저장소를 설치해 관리하는 것이 가능한데 이것이 원격 저장소이다. 원격 저장소는 회사내에서만 사용하기 위한 용도로 많이 사용된다. 로컬 저장소 : 로컬 저장소는 메이븐을 빌드할 때 다운로드하는 라이브러리, 플러그인을 관리하는 개발자 PC의 저장소이다. (USER_HOME/.m..
테스트하기 mvn test test페이즈는 target/test-classes에 컴파일한 단위 테스트 클래스를 실행하고 그에 따른 결과물을 target/surefire-reports 디렉토리에 생성한다. (test-compile 페이즈에 의존 관계를 가진다.) 만약 테스트 스위트(TestSuite)별로 나누어서 테스트할 필요가 있다면 test 옵션을 사용한다. 다음과 같이 원하는 테스트 클래스를 지정할 수 있다. mvn -Dtest=원하는클래스 test mvn -Dtest=원하는클래스1,원하는클래스2 test 단위 테스트가 실패하여 빌드가 실패할 경우 (테스트케이스 관리가 안될 경우) 테스트를 스킵할 수 있다. mvn -Dmaven.test.skip=true test 매번 인자로 전달하기 싫다면 pom...
느낀점 Pojomatic 라이브러리라는게 있다. Object에 포함된 equals, hashCode, toString 메소드를 간단히 구현할 수 있도록 도와준다.(lombok도 가능할텐뎅) org.pojomatic pojomatic 1.0 bean 설정을 xml로만 했더니, JavaConfig 를 활용했을 때 생소한 부분이 많이 있었다. Java로 Configuration할 때와 xml의 장, 단점을 몸소 겪어보자..(mybatis-spring 에서 @MapperScan 이라는 걸 처음봤다. MyBatis를 java로 빈을 설정하니 생소하였다..)
해야할일 로그 관련 라이브러리 조사(logback, slf4j)
개발 환경 Java 8 maven 3.5 Logback/SLF4J Spring 4.3.8.RELEASE MyBatis 3.2 요구사항 정의 도서 정보 목록을 조회 도서 상세 정보를 조회 도서 정보를 등록 도서 정보를 수정 도서 정보를 삭제
람다식 람다식이란? 자바8부터는 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합할 수 있게 람다식을 제공한다. 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. 람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체 Runnable 인터페이스의 익명 객체를 생성하는 전형적인 코드 방식 Runnable runnable = new Runnable(){ public void run(){ ... } }; Runnable runnable = ()-> { ... }; 람다식은 "(매개변수) -> {실행코드}" 형태로 작성된다. 런타임 시에 인터페이스의 익명 구현 객체로 생성된다. 어떤 인터페이스를 구현할 것인가는 대입되는 인터페이스..
깡냉쓰
'2019/03 글 목록