본문 바로가기
안드로이드(kotlin)

LicenseToolsPlugin을 사용해서 자동으로 라이센스 공개하기

by 기계공학 주인장 2022. 12. 22.
반응형

LicenseToolsPlugin란

  • 사용중인 라이브러리의 라이센스의 정보를 자동으로 생성
  • 생성된 파일은 html 형식의 파일로 출력됨
  • 출력된 html 파일을 화면에 보여주는 방식으로 라이센스 공개
  • 일본의 cookpad라는 회사에서 만든 오픈소스

LicenseToolsPlugin 깃허브 주소

https://github.com/cookpad/LicenseToolsPlugin

 

GitHub - cookpad/LicenseToolsPlugin: Gradle plugin to check library licenses and generate license pages for Android

Gradle plugin to check library licenses and generate license pages for Android - GitHub - cookpad/LicenseToolsPlugin: Gradle plugin to check library licenses and generate license pages for Android

github.com

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


필요한 Dependency 선언

// project 수준의 gradle에서 선언
buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.cookpad.android.plugin:plugin:1.2.6"
  }
}
// app 수준의 gradle에서 선언
apply plugin: "com.cookpad.android.plugin.license-tools"

사용 방법

Licenses.yml 파일 생성하기

  1. 안드로이드 스튜디오 터미널에 다음과 같이 입력한다
    • ./gradlew updateLicenses
  2. 성공했다면 ./app/licenses.yml 파일이 만들어진 것을 확인할 수 있다
    • 보기 설정을 Android가 아닌 Project로 해야 보인다
    • 실패 했다면 ./gradlew checkLicenses를 먼저 해보고 다시 실시해본다

 

생성한 파일을 확인하기

  1. 안드로이드 스튜디오 터미널에 다음과 같이 입력한다
    • ./gradlew checkLicenses
  2. 성공했다면 BUILD SUCCESSFUL 메시지를 볼 수 있다

licenses.html 파일 생성하기

  1. 안드로이드 스튜디오 터미널에 다음과 같이 입력한다
    • ./gradlew generateLicensePage
  2. 성공 했다면 ./app/src/main/assets/licenses.html 파일이 만들어진 것을 화인할 수 있다
    • 보기 설정을 Android가 아닌 Project로 해야 보인다

LicenseToolsPlugin 셋업 시 발생할 수 있는 문제나 주의 사항

 

  • licenses 파일들이 생성되는 과정
    1. updateLicenses를 통해 licenses.yml 파일을 생성한다
    2. ./gradlew generateLicensePage는 licenses.yml을 참조하여 licenses.html 파일을 생성한다
    3. 그렇기 때문에 대부분의 문제는 licenses.yml에 있는 내용 때문에 발생한다
  • Could not generate the copyright statement 라는 에러가 발생했을 때
    • 해당 artifact 안에 skip: true 항목을 추가 해준다
      • 이는 check할 때 해당 라이브러리의 라이센스가 licenses.html에 정의 되어있는지 확인하지 않겠다는 의미이다.
      • marven에 등록되어있지 않은 라이브러리는 자동으로 등록할 수 없기 때문에 이와 같은 에러가 발생한다.
    • 또는 copyrightHolder에 값을 넣어준다
      • 처음 생성되었다면 copyrightHolder 에는 #COPYRIGHT_HOLDER# 같은 무의미한 값이 들어있다
      • 하지만 이를 삭제하고 Google 같이 실제 해당 라이브러리를 소유하고 있는 or 제작한 회사 or 개인의 이름 등을 넣어두면된다
  • LicenseToolsPlugin가 모든 라이브러리를 셋업을 해주는 것은 아니다
    • 일단 출력한 뒤 실제로 앱을 통해 어떠한 라이브러리에 html로 자동으로 셋업해줬는지 확인하고 사용해야한다.
  • Licenses not matched with pom.xml in dependencies 에러가 발생했을 때
    • 해당 라이브러리의 버전이 pom.xml에 있는 버전과 다르기 때문에 발생하는 에러이다.
    • 해결 방법은 licenses.yml에 들어가서 해당 라이브러리에 forceGenerate: true를 추가해준다
    • 그렇게하면 pom.xml에 강제로 해당 버전을 override해줘서 에러를 막아준다.

생성된 html 파일을 보여주기

  • 생성된 html 파일을 보여주는 것 만으로도 끝이 난다
  • 아래와 같은 모습의 html이 됩니다

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글