[gradle] 그래들의 java plugin
2014/02/26 - [Java/Tools] - [Gradle] gradle init --type java-library
이전 포스팅에서 설명했던 그레들을 이용해서 자바프로젝트를 초기화해보자.
gradle init --type java-library
실행결과는 다음과 같다
.
├── README.md
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ └── java
│ └── Library.java
└── test
└── java
└── LibraryTest.java
7 directories, 9 files
- gradle-wrapper.jar: 운영체제에 그레들이 설치되어 있지 않아도 JDK가 설치되어 있다면 래퍼를 통해서 실행이 가능하다.
- gradlew, gradlew.bat: 운영체제에서 실행가능한 스크립트로 리눅스, 유닉스 계열은 gradlew, 윈도우는gradlew.bat를 실행하면 된다. 그레들 래퍼를 사용할 때 필요한 그레들과 자바에 대한 환경설정을 할 수 있으며, 이는 개발팀 공통 적용이 가능해진다. 파일을 열어보면 위에 보이는
gradle-wrapper.jar
을 classpath로 지정하여 실행된다는 것을 확인할 수 있다.즉, 운영체제에 설치된 그레들이 아니라, 현재 프로젝트 내에 있는 gradle-wrapper를 중심으로 그레들 실행이 된다는 이야기다.
- build.gradle: 메이븐의 pom.xml과 같은 기능을 하는 빌드스크립트이며, 그루비groovy를 DSL로 채용하여 그루비의 문법을 사용한 동적인 빌드 스크립트를 작성하고, 의존성dependency 설정이 가능하다는 장점을 제공한다.
- settings.gradle: 프로젝트 설정 및 멀티프로젝트에 대한 설정을 할 수 있다.
- 참고: Settings
build.gradle과 settings.gradle이 프로젝트 루트경로(/)에 존재하는 경우에는 그레들을 이용한 프로젝트 초기화가 적용되지 않는다.
- 참고: Settings
이제 build.gradle
에 있는 apply plugin: 'java'
를 살펴보도록 하자.
apply plugin: 'java'
: 그레들 자바 플러그인 사용 선언
build.gradle
상단 부분을 보면 다음과 같은 항목을 볼 수 있을 것이다.
// Apply the java plugin to add support for Java
apply plugin: 'java'
주석으로 알 수 있듯이 java를 사용하기 위한 java plugin을 사용한다는 것을 선언한 것이다.
- 문서: Chapter 23. The Java Plugin
gradle은 문서화가 잘 되어 있다.
그레들은 플러그인을 추가하면, 그 플러그인에 선언되어 있는 태스크task들도 추가된다. 추가된 태스크를 확인하는 방법은 다음과 같다.
gradle tasks
자바 플러그인을 설치하고 나면 Build tasks가 추가된다.
ihoneymon@gradle-starter (master)$ gradle tasks
:tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
classes - Assembles classes 'main'.
clean - Deletes the build directory.
jar - Assembles a jar archive containing the main classes.
testClasses - Assembles classes 'test'.
Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]
Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.
Help tasks
----------
dependencies - Displays all dependencies declared in root project 'gradle-starter'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-starter'.
help - Displays a help message
projects - Displays the sub-projects of root project 'gradle-starter'.
properties - Displays the properties of root project 'gradle-starter'.
tasks - Displays the tasks runnable from root project 'gradle-starter'.
Verification tasks
------------------
check - Runs all checks.
test - Runs the unit tests.
Rules
-----
Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.
Pattern: clean<TaskName>: Cleans the output files of a task.
To see all tasks and more detail, run with --all.
BUILD SUCCESSFUL
Total time: 3.875 secs
메이븐을 접해본 사람이라면, ‘메이븐의 build lifecycle과 유사한 것 같은데?’라고 생각할수도 있다.
간단하게 test
태스크를 실행해보자.
./gradlew test
별다른 변화는 없다. 그냥 보면 심심하니까 테스트를 실패해보자. 소스코드를 다음과 같이 수정하고
테스트를 실행하면 다음과 같이 AssertionError 가 발생했다는 메시지와 함께 테스트가 실패한 곳을 표시한다.
이렇게 간단하게 gradle의 java 플러그인을 살펴봤다. 다음에는 간단하게 태스크를 작성하고 실행해보도록 하겠다. 그레들 플러그인을 설치하여 추가되는 태스크 외에도 사용자가 태스크 스크립트를 작성하여 실행할 수 있으며, 빌드에 지정한 태스크를 실행되도록 할 수도 있다.