코틀린으로 작성된 셀레니움 크롤러 컴파일 및 명령줄(CLI) 실행하기

개요

깃허브 블로그를 하면서 마크다운을 일일이 작성하기가 번거롭고 귀찮아서 만들었습니다.
완성된(성공적으로 해결한) 소스코드를 IDE도움 없이 명령줄에서 문제번호만 이용하여 자동으로 마크다운 파일을 만들게 해봅시다.

개발환경

macOS 11.1 (Intel Mac) 기준

인텔리제이(IntelliJ 2020.3)
OpenJDK-15.0.1
Microsoft Edge Browser(87.0.664.66)
Microsoft Edge WebDriver(87.0.664.66)
selenium-java (4.0.0-alpha-7)

기타 셀레니움 사용관련 정보 및 이전 내용

셀레니움 크롤러 설치 및 세팅방법은 여기
백준 크롤링 및 마크다운 파일 생성기 여기

IDE(인텔리제이) gradle 프로젝트 수정하기

kotlin 소스파일 위치 변경

컴파일을 하기 위해선 소스코드 파일(Crawler.kt)이 src/main/kotlin보다 아래인 src/main/kotlin/com에 존재해야합니다.
이렇게 존재하지 않을 경우, 컴파일후 CLI로 실행시 main함수를 찾지 못하는 에러가 발생하게 됩니다.
그림1 위 그림1과 같이 다음 작업을 수행합니다.

프로젝트 관리자에서 src/main/kotlin 아래 package로 com이라는 하위 폴더를 생성하고 src/main/kotlin/Crawler.kt를 com의 하위인 src/main/kotlin/com/Crawler.kt로 이동시킵니다. 이때 발생하는 대화창에는 refactor를 선택합니다.

build.gradle 수정하기하고 빌드하기

그림2 그림3

buildscript {
    ext.kotlin_version = '1.4.21'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group = 'me.choiyoujun'
version = '1.0-SNAPSHOT'

apply plugin: 'application'
apply plugin: 'java'
apply plugin: 'kotlin'

sourceCompatibility = 1.8

mainClassName = "com.Crawler"

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.0.0-alpha-7'

}

repositories {
    mavenCentral()
}

test {
    useJUnit()
}

compileKotlin {
    kotlinOptions.jvmTarget = '1.8'
}

compileTestKotlin {
    kotlinOptions.jvmTarget = '1.8'
}

jar {
    manifest {
        attributes 'Main-Class': 'com.CrawlerKt'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

sourceSets {
    main.java.srcDirs += 'src/main/kotlin/'
    test.java.srcDirs += 'src/test/kotlin/'
}

프로젝트 관리자에서 build.gradle를 오픈합니다.
build.gradle의 내용을 위와 같이 적절하게 수정합니다.
빌드를 진행하기 전 Crawler.kt 소스코드를 먼저 확인해주세요.
이 포스트에서 사용된 Crawler.kt의 버젼은 ver.20210112-2입니다.
그 후 우측 상단의 gradle 메뉴를 열어 tasks/build/build를 선택하여 gradle를 재빌드합니다.

gradle로 빌드한 .jar파일을 명령줄(CLI)로 실행하기

gradle빌드가 성공적으로 완료됐다면
프로젝트의 SeleniumCrawler/build/libs에 SeleniumCrawler-1.0-SNAPSHOT.jar라는 파일이 생성됩니다.
이 파일(SeleniumCrawler-1.0-SNAPSHOT.jar)은 자바가상머신(JVM)으로 단독실행이 가능한 파일입니다.
macOS의 기본 응용프로그램인 터미널(Terminal)를 열고 다음과 같은 명령어를 입력합니다.

java -jar /프로젝트 상위 경로/SeleniumCrawler/build/libs/SeleniumCrawler-1.0-SNAPSHOT.jar 문제번호 false

예) java -jar /Users/사용자폴더/Documents/IdeaProjects/SeleniumCrawler/build/libs/SeleniumCrawler-1.0-SNAPSHOT.jar 17362 false

그림4 명령줄로 실행한 파일이 성공적으로 작동했다면 위와 같은 화면이 나타납니다!
이것으로 프로토타입의 크롤링 및 마크다운파일 자동생성기를 성공적으로 만들고 작동시켰습니다.