프로젝트를 진행할 때 우리는 여러 라이브러리를 여기저기서 끌여다가 사용하게 됩니다. 열심히 만든 개발 결과물이 개발 단계에서 사용된 외부 라이브러리로 인해 낭패 보지 않도록 프로젝트 내에서 사용한 각 라이브러리에 대한 라이선스 정보를 파악할 필요성이 있습니다. 각 라이브러리를 하나씩 찾아서 수기로 작성하기엔 시간도 아깝고 눈도 아픕니다. 이를 자동화하여 추출할 수 있는 방법을 소개해드리겠습니다.
Spring Boot와 Gradle 기반의 프로젝트의 예시
build.gradle 에 다음과 같이 라이브러리 추가 (Gradle ≥ 5.*)
plugins {
.... // 여러 플러그인들...
id "com.github.jk1.dependency-license-report" version "1.13"
}
이후 Intellij 의 우측 툴바에서 Gradle을 클릭합니다.
Task 폴더를 눌러 Gradle에서 수행 가능한 Task 정보를 확인합니다.
reporting Task 그룹을 선택합니다. 하위에 generateLicenseReport Task 항목을 눌러서 실행시킵니다.
이후 project/build/report 하위에 생성된 라이선스 관련 보고서들을 확인합니다.
depdency-license 디렉토리 하위에 있는 report 파일이 해당 프로젝트에서 사용된 라이브러리에 대한 라이선스 정보를 정리한 파일입니다.
기본 설정으로 라이선스 정보를 추출하면, Transitive 관계를 가지는 라이브러리들은 계속 중복해서 표출이 되기 때문에 다음과 같이 적절하게 설정을 하여 문서를 정리합니다
build.gradle 코드
// 상단
import com.github.jk1.license.render.*
import com.github.jk1.license.filter.LicenseBundleNormalizer
import com.github.jk1.license.filter.ExcludeTransitiveDependenciesFilter
// ....... 머 여러가지 잡다한 설정들과 기존 프로젝트 설정
//라이선스 파일 추출과 관련한 설정
licenseReport {
// redener는 여러가지 있으니 찾아서 사용하고싶은걸 선택하거나
// 비워두면 기본적으로 xml, html, json으로 추출됨
renderers = [new InventoryMarkdownReportRenderer()]
// Normalization 필터와 ExecludeTransitiveDependenciesFilter 추가
filters = [new LicenseBundleNormalizer(), new ExcludeTransitiveDependenciesFilter()]
}
위 처럼 설정을 한 뒤에 다시, gradle task를 실행시키면 다음과 같이 예쁘게 라이선스 정보 파일이 생성됩니다 ( Markdown file 예제입니다.)
<Intellij 마크다운 에디터>
<깃헙에서 봤을 때>
'Programming > Java' 카테고리의 다른 글
[Java8] 윤년, 다음달 말일 계산 (0) | 2020.07.17 |
---|---|
[Java] AES 256 암복호화 유틸클래스 (0) | 2020.07.15 |
[Intellij IDEA Plugin, Java] SonarLint 코드 퀄리티를 높여보자! (3) | 2020.02.03 |
[Java8] Stream API 공부 정리 (1) (2) | 2020.01.16 |
[JPA , Hibernate] Add Prefixed Table Name (0) | 2019.12.13 |