Gradle 기본 명령어.gitignore에 추가해야 할 gradle 파일들Locating tasksTest task에서 stdout console에 출력하기Jar task외부 의존성 포함 안되는 문제
Gradle 기본 명령어
- gradle init, gradle build, gradle run 명령들은 다 task 단위임
- gradle은 task를 수행함으로써 그 내용이 수행됨
//build.gradle plugins { // Apply the application plugin to add support for building a CLI application in Java. id 'application' } tasks.named('test') { // Use JUnit Platform for unit tests. useJUnitPlatform() } // -> gradle test 로 해당 task 실행가능함
gradle init
→ gradle 프로젝트 셋팅됨
gradle build
→ gradle 프로젝트 빌드- 테스트 없이 build :
gradle build -x test
gradle run
→ 빌드된 프로젝트 실행- 위의 세 task는 build.gradle에 명시되어 있지 않지만, 관습적인 사용 방식이기에 plugin에 추가함으로써 자동으로 task가 생성됨(
id ‘application’
)
.gitignore에 추가해야 할 gradle 파일들
gradle wrapper
명령 실행 시 아래 파일들 자동으로 생성됨- gradle 폴더 - gradle이 실행되기 위한 jar 파일들이 존재
- .gradle 폴더
- gradlew, gradlw.bat
build
폴더
Locating tasks
[ Gradle 문서 ] Authoring Gradle Builds > Develoing Gradle Tasks > Authoring Tasks > Locating tasks
tasks.named('asciidoctor') { inputs.dir snippetsDir configurations 'asciidoctorExtensions' dependsOn test }
- 기존에 정의되어 있는 task에 대해서 configure를 하거나 의존성을 위해서 사용할 때 사용하는 명령어임
Test task에서 stdout console에 출력하기
[ Gradle Docs 참고 ]
plugins { id 'java' // adds 'test' task } test { // Discover and execute JUnit4-based tests useJUnit() // Discover and execute TestNG-based tests useTestNG() // Discover and execute JUnit Platform-based tests useJUnitPlatform() testLogging.showStandardStreams = true }
Jar task
외부 의존성 포함 안되는 문제
[ Gradle forums] How to include dependencies in jar?
[ StackOverflow ] NoClassDefFoundError at Runtime with Gradle
- 위의 Gradle link 를 확인해보면 외부 의존성은 default로는 포함이 안된다고 함
- 기본값은 프로젝트의 소스코드의 클래스 파일들만 포함
- 그 이유는 dependency 가 이미 제공되어 있는 상황일 수도 있다고 하고, war plugin을 사용하면 WEB-INF/lib 안에 포함되어야 한다고 함
⇒ shadow plugin을 사용해라!
gradle shadow
plugins { id 'java' id 'com.github.johnrengelman.shadow' version '7.0.0' }