17장. Maven으로 빌드
초록
Maven은 Apache Maven 프로젝트에서 사용할 수 있는 오픈 소스 빌드 시스템입니다. 이 장에서는 몇 가지 기본 Maven 개념에 대해 설명하고 Red Hat Fuse에서 작동하도록 Maven을 설정하는 방법을 설명합니다. 기본적으로 모든 빌드 시스템을 사용하여 OSGi 번들을 빌드할 수 있습니다. 그러나 Maven은 Red Hat Fuse에서 효과적으로 지원하는 것이 좋습니다.
17.1. Maven 디렉터리 structure 링크 복사링크가 클립보드에 복사되었습니다!
17.1.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
Maven 빌드 시스템의 가장 중요한 원칙 중 하나는 Maven 프로젝트의 모든 파일에 대한 표준 위치가 있다는 것입니다. 이 원칙에는 몇 가지 장점이 있습니다. 한 가지 장점은 Maven 프로젝트에는 일반적으로 동일한 디렉터리 레이아웃이 있어 프로젝트에서 파일을 쉽게 찾을 수 있다는 것입니다. 또 다른 장점은 Maven과 통합된 다양한 툴이 초기 구성이 거의 필요하지 않다는 것입니다. 예를 들어 Java 컴파일러는 src/main/java
아래에 있는 모든 소스 파일을 컴파일하고 결과를 대상/클래스
에 배치해야 함을 알고 있습니다.
17.1.2. 표준 디렉터리 레이아웃 링크 복사링크가 클립보드에 복사되었습니다!
예 17.1. “표준 Maven 디렉터리 레이아웃” OSGi 번들 프로젝트 빌드와 관련된 표준 Maven 디렉터리 레이아웃의 요소를 보여줍니다. 또한 블루프린트 구성 파일(MM에 의해 정의되지 않음 )의 표준 위치도 표시됩니다.
예 17.1. 표준 Maven 디렉터리 레이아웃
표준 디렉터리 레이아웃을 재정의할 수 있지만 Maven에서는 권장되지 않습니다.
17.1.3. POM.xml 파일 링크 복사링크가 클립보드에 복사되었습니다!
pom.xml
파일은 현재 프로젝트를 빌드하는 방법에 대한 완전한 설명이 포함된 현재 프로젝트의 POM(Project Object Model)입니다. pom.xml
파일은 완전히 자체 포함 될 수 있지만 상위 POM 파일에서 설정을 가져올 수 있습니다.
프로젝트를 빌드한 후 생성된 JAR 파일의 다음 위치에 pom.xml
파일의 사본이 자동으로 포함됩니다.
META-INF/maven/groupId/artifactId/pom.xml
META-INF/maven/groupId/artifactId/pom.xml
17.1.4. src 및 대상 디렉터리 링크 복사링크가 클립보드에 복사되었습니다!
src/
디렉터리에는 프로젝트를 개발하는 동안 작업할 모든 코드와 리소스 파일이 포함되어 있습니다.
target/
디렉터리에는 빌드 결과(일반적으로 JAR 파일)와 빌드 중에 생성된 모든 중간 파일이 포함됩니다. 예를 들어 빌드를 수행한 후 target/classes/
디렉터리에는 리소스 파일의 복사본과 컴파일된 Java 클래스가 포함됩니다.
17.1.5. 기본 및 테스트 디렉토리 링크 복사링크가 클립보드에 복사되었습니다!
src/main/
디렉터리에는 아티팩트를 빌드하는 데 필요한 모든 코드와 리소스가 포함되어 있습니다.
src/test/
디렉터리에는 컴파일된 아티팩트에 대해 단위 테스트를 실행하기 위한 모든 코드와 리소스가 포함되어 있습니다.
17.1.6. Java 디렉터리 링크 복사링크가 클립보드에 복사되었습니다!
각 java
하위 디렉터리에는 표준 Java 디렉터리 레이아웃이 있는 Java 소스 코드(/
*.java
파일)가 포함되어 있습니다(즉, 디렉터리 경로 이름이 .
문자 대신 Java 패키지 이름을 미러링하는 경우). src/main/java/
디렉터리에는 번들 소스 코드가 포함되어 있고 src/test/java/
디렉터리에는 단위 테스트 소스 코드가 포함되어 있습니다.
17.1.7. 리소스 디렉터리 링크 복사링크가 클립보드에 복사되었습니다!
번들에 포함할 구성 파일, 데이터 파일 또는 Java 속성이 있는 경우 src/main/resources/
디렉터리에 배치해야 합니다. src/main/resources/
아래의 파일 및 디렉터리는 Maven 빌드 프로세스에서 생성되는 JAR 파일의 루트로 복사됩니다.
src/test/resources/
아래의 파일은 테스트 단계에서만 사용되며 생성된 JAR 파일에 복사 되지 않습니다.
17.1.8. 블루프린트 컨테이너 링크 복사링크가 클립보드에 복사되었습니다!
OSGi R4.2는 블루프린트 컨테이너를 정의합니다. Red Hat Fuse는 블루프린트 컨테이너를 기본적으로 지원하므로 블루프린트 구성 파일인 OSGI-INF/blueprint/*.xml
을 프로젝트에 포함할 수 있습니다. 블루프린트 컨테이너에 대한 자세한 내용은 12장. OSGi Services 에서 참조하십시오.