Gradle, JUnit, Maven
- Installation
- Gradle 3.x on Ubuntu
- Tasks - {:.} Running Multiple Tasks - {:.} Obtaining build information - {:.} The Gradle Daemon
- Gradle Wrapper - {:.} Executing a build with the Wrapper - {:.} Adding the Wrapper
- JVM Projects - {:.} Maven Naming - {:.} Basic JAVA Project
- Maven - {:.} Installation - {:.} Project Ojbect Model (POM) - {:.} Build Life Cycle
- JUnit - {:.} Configuration

Installation
Gradle 3.x on Ubuntu
우분에서 기본적으로 제공하는 Gradle버젼은 2.5입니다. 3.x 버젼이상을 설치하기 위해서는 다음과 같이 합니다.
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle
Tasks
Running Multiple Tasks
task compile << {
println '컴파일링!'
}
task unittest(dependsOn: compile) << {
println '유닛테스트!'
}
gradle compile unittest 이렇게해서 2개의 tasks를 실행시키지만, compile task가 중복되서 실행되지는 않습니다.
dependsOn에 상관없이 gradle에서는 한번만 실행이 됩니다.
$ gradle compile unittest
:compile
컴파일링!
:unittest
유닛테스트!
BUILD SUCCESSFUL
Total time: 2.576 secs
gradle unittest -x compile 처럼 -x뒤에 task를 쓰면 exclude가 됩니다.
(즉 compile task는 실행이 안되고 unittest만 실행됨)
Obtaining build information
gradle -q projects
서브 프로젝트 리스트를 보여줍니다. -q는 quiet
description=’something’을 넣을수 있습니다.
The Gradle Daemon
Build하는데 들어가는 bootstrapping이나 기타등등을 메모리에 계속 올려놓음으로서 빠르게 빌드 가능합니다.
(개발시에서는 항상 켜놓고, CI에서는 항상 꺼놓는게 좋습니다.)
~/.gradle/gradle.properties 의 파일안에 다음을 집어넣고 저장합니다.
org.gradle.jvmargs=-Xmx12G -Xms6G
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.caching=true
org.gradle.upToDateChecks.enabled=true
Gradle Wrapper
Executing a build with the Wrapper
각각의 Gradle Wrapper는 특정 버젼과 연결이 되어 있습니다.
따라서 ./gradlew
즉 gradle 프로젝트를 다른 컴퓨터에서 실행시, 따로 gradle를 설치할 필요가 없습니다.
Adding the Wrapper
wrapper를 추가하려면 gradle wrapper를 실행시키면 되며, 특정 버젼을 명시하기 위해서는 –gradle-version
gradle wrapper --gradle-version 2.5
wrapper task를 추가함으로서, gradle wrapper 를 실행시킬때 추가적인 Customize를 할 수 있습니다.
task wrapper(type: Wrapper) {
println 'Wrapper를 만듭니다.'
gradleVersion = '2.0'
}
gradle wrapper 를 실행후 다음의 파일들이 만들어지는데, 모두 빠짐없이 Version Control System (Git)에 추가되어야 합니다.
project/
gradlew
gradlew.bat
gradle/wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Gradle버젼 추후 변경시, gralde wrapper를 다시 실행할 필요 없이 gradle-wrapper.properties 파일을 수정하면 됩니다.
JVM Projects
Maven Naming
Maven Repository로 디플로이할때 Gradle은 자동으로 POM 을 생성합니다.
이때 groupId, artifactId, version and packaging elements 들이 POM을 만들때 사용됩니다.
Name | Description | Example |
---|---|---|
GroupId | Maven의 모든 프로젝트 안에서 Uniquely Identify 하는 이름. 주로 도메인 명을 사용합니다. |
org.apache.maven org.apache.commons |
artifactId | 버젼이 안써진 Jar 파일 이름. lowercase 알페벳으로 쓰는게 컨벤션 |
maven, commons-math |
version | 버젼.. | 2.0, 2.0.1, 1.3.1 |
Basic JAVA Project
apply plugin ‘java’를 해주면 Java Project의 기본적으로 사용하는 많은 tasks들이 자동으로 붙습니다.
build.gradle 예제..
group 'andersonjo'
version '1.0-SNAPSHOT'
description = 'Anderson Java Note Book'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
compile 'commons-codec:commons-codec:1.10'
compile 'commons-io:commons-io:2.4'
compile 'org.apache.commons:commons-lang3:3.0'
compile 'com.google.guava:guava:19.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Maven
Maven은 Project Object Model (POM)에 기초한 프로젝트 관리툴입니다.
Installation
apt-get maven으로 설치가 가능합니다. (현재 버젼 3.3.3)
이때 maven2를 설치하면 안됩니다. (낮은 버젼이 설치됨)
sudo apt-get install maven
Project Ojbect Model (POM)
groupId, artifactId, version 이렇게 3개가 repository안에서 다른 프로젝트들과 구별되게 만듭니다.
pom.xml example
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.andersonjo</groupId>
<artifactId>maven-tutorial</artifactId>
<version>0.0.1</version>
</project>
Build Life Cycle
Build Lifecycle 은 다음과 같은 절차(sequence)를 밟게 됩니다.
JUnit
Configuration
build.gradle 파일에 다음을 추가해 줍니다.
apply plugin: 'java'
dependencies {
testCompile 'junit:junit:4.12'
}
test {
testLogging.showStandardStreams = true
}
# src/test/java/hello/BasicTest.java
package hello;
import org.junit.Assert;
import org.junit.Test;
public class BasicTest {
@Test
public void testSample() {
Assert.assertEquals("Gradle is awesome", "Gradle is awesome");
}
}
전체 모든 테스트 케이스들을 다 돌리는 것은 다음과 같이 합니다.
./gradle test