- BOM (Bill Of Materials)
- POM
- BOM Sample
- How to use BOM
- Spring BOM File
- How to Use POM
- GRADLE 의 Dependency 관리
- 또 다른 BOM (Byte Order Mark )
BOM (Bill Of Materials)
- Bill Of Materials 의 약자
- 일종의 특별한 POM 파일
- 프로젝트에서 사용하는 Dependency들을 한 곳에서 관리하고 싶을 때 사용한다.
-
섹션을 사용함
POM
- 프로젝트의 정보 및 설정을 담고 있는 XML 파일
- 프로젝트를 빌드하기 위한 Dependency 를 관리하는데 사용된다.
BOM Sample
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>BaelDung-BOM</name>
<description>parent pom</description>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>a</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>b</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
How to use BOM
▶ CASE 1
<project ...>
<parent>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>
▶ CASE 2
<dependencyManagement>
<dependencies>
<dependency>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring BOM File
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
How to Use POM
- POM에서는 기정의된 Dependency Version이 존재하므로 Version 정보없이 기입가능
- BOM에 명시된 Version 정보를 가져온다.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependencies>
GRADLE 의 Dependency 관리
io.spring.dependency-management
build.properties
buildscript {
dependencies {
classpath 'io.spring.gradle:dependency-management-plugin:$Version'
}
}
configure(allprojects) {
apply plugin: 'io.spring.dependency-management'
# MAVEN의 <dependencyManagement> 섹션과 동일한 역할
dependencyManagement {
imports {
mavenBom 'io.spring.platform:platform-bom:$Version'
}
}
}
또 다른 BOM (Byte Order Mark )
- Byte Order Mark 의 약자
- 유니코드 인코딩에 여러가지 방식이 존재하여 생긴 이슈
- 문서 앞에 Signature 바이트를 넣는다.
BOM 정보
인코딩 방식 | Byte Order Mark(BOM) |
---|---|
UTF-8 | EF BB BF |
UTF-16 Big Endian | FE FF |
UTF-16 Little Endian | FF FE |
UTF-32 Big Endian | 00 00 FE FF |
UTF-32 Little Endian | FF FE 00 00 |
BOM의 Side Effect
- Windows 환경에서 작성한 파일을 Linux 환경으로 올렸을 때 Byte 수가 맞지 않는 경우 발생
- Windows 의 NotePad 등은 UTF-8 파일을 생성할때 자동으로 BOM을 넣는다.
- 파일의 크기가 예상과는 다른 상황이 발생할 수 있다.