0. gradle์ ์ฌ์ฉํ๋ ์ด์
ํ๋ก๊ทธ๋๋ฐ ์ค์ ์์ฑ๋๋ ํ์ผ์ ๋๋ ํด๋๊ฐ ํ๋ก์ ํธ ํด๋์ด๋ค. ๋ค์ํ ์ข ๋ฅ์ ํ์ผ์ ํ ํด๋์ ๋๋ฉด ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ถํธํ๊ธฐ ๋๋ฌธ์ ํ์ ํด๋๋ฅผ ๋ง๋ค์ด ๊ตฌ๋ถํ๋ค. ํ๋ก์ ํธ์ ํ์ ํด๋๋ฅผ ๋ง๋ค ๋๋ ๊ตญ๊ฐ, ํ์ฌ, ๊ฐ๋ฐ์, ํ๋ก์ ํธ์ ์๊ด ์์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํด ๋ฉ์ด๋ธ(Maven) ๋น๋ ๋๊ตฌ์ ํ์ค ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
1
2
3
4
5
6
7
8
9
๋ฉ์ด๋ธ ํ๋ก์ ํธ ํด๋
โโโ src
โโโ main <== ์ ํ๋ฆฌ์ผ์ด์
๊ด๋ จ ํ์ผ์ ๋๋ ํด๋
โย ย โโโ java <== ์) ํจํค์ง ํด๋ ๋ฐ ์๋ฐ ์์ค ํ์ผ(.java)
โย ย โโโ resources <== ์) ํจํค์ง ํด๋ ๋ฐ ์ค์ ํ์ผ(.xml, .properties ๋ฑ)
โย ย โโโ webapp <== ์น ํ์ผ์ ๋๋ ํด๋
โโโ test <== ๋จ์ ํ
์คํธ ๊ด๋ จ ํ์ผ์ ๋๋ ํด๋
โโโ java <== ํจํค์ง ํด๋ ๋ฐ ๋จ์ ํ
์คํธ ์๋ฐ ์์ค ํ์ผ
โโโ resources <== ๋จ์ ํ
์คํธ ๊ด๋ จ ์ค์ ํ์ผ(.xml, .properties ๋ฑ)
Gradle์ด๋ผ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ๊ฐ์ ํ๋ก์ ํธ ํด๋๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๋ค. Gradle์ ํ๋ก์ ํธ ํด๋ ๊ตฌ์ฑ์์ ์ปดํ์ผ, ํ ์คํธ, ๋ฐฐํฌ ํ์ผ ์์ฑ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ํ์ํ ์ ๋ฐ์ ์ธ ์์ ์ ๋์์ค๋ค.
1. ์๋ฐ ํ๋ก์ ํธ ์์ํ๊ธฐ
gradle init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
bitcamp-java-project git:(master) โ gradle init
Starting a Gradle Daemon (subsequent builds will be faster)
Select type of project to generate: <== ํ๋ก์ ํธ ์ ํ ์ ํ
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language: <== ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ ์ธ์ด ์ ํ
1: C++
2: Groovy
3: Java
4: Kotlin
5: Swift
Enter selection (default: Java) [1..5] 3
Select build script DSL:
1: Groovy <== ๋น๋ ์คํฌ๋ฆฝํธ ํ์ผ์ ์์ฑํ ๋ ์ฌ์ฉํ ์ธ์ด ์ ํ
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
Select test framework:
1: JUnit 4 <== ๋จ์ ํ
์คํธ๋ก ์ฌ์ฉํ ํ๋ ์์ํฌ ์ ํ
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1
Project name (default: bitcamp-java-project): <== ํ๋ก์ ํธ ์ด๋ฆ ์ค์
Source package (default: bitcamp.java.project): com.eomcs.pms <== ์๋ฐ ํจํค์ง ์ค์
> Task :init
Get more help with your project: https://docs.gradle.org/6.5.1/userguide/tutorial_java_projects.html
BUILD SUCCESSFUL in 53s
2 actionable tasks: 2 executed
Gradle๋ก ์์ฑํ ํ๋ก์ ํธ ์ค์ ํ์ผ๊ณผ ํด๋๋ฅผ ํ์ธํ์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
โโโ build.gradle
โโโ gradle
โย ย โโโ wrapper
โย ย โโโ gradle-wrapper.jar <== (1)
โย ย โโโ gradle-wrapper.properties
โโโ gradlew <== (2)
โโโ gradlew.bat
โโโ settings.gradle <== (3)
โโโ src
โโโ main
โย ย โโโ java
โย ย โย ย โโโ com
โย ย โย ย โโโ eomcs
โย ย โย ย โโโ pms
โย ย โย ย โโโ App.java
โย ย โโโ resources
โโโ test
โโโ java
โย ย โโโ com
โย ย โโโ eomcs
โย ย โโโ pms
โย ย โโโ AppTest.java
โโโ resources
- (2)
gradlew
: gradle๋ก ๋น๋ํ ํ๋ก์ ํธ๋ฅผ ๋๊ตฐ๊ฐ ์๋ฒ์ ์ฌ๋ฆฌ๊ณ ๋๋ฃ๊ฐ ํด๋ก ํ์ ๋, ๋๋ฃ๋ ๊ตณ์ด ๋ฐ๋ก gradle์ ์ค์นํ์ง ์์๋gradlew
ํ์ผ์ด (1)gradle-wrapper.jar
๋ฅผ ํ์ด์ ์คํํ ์ ์๊ฒ ํ๋ค. - (3)
settings.gradle
: ํ๋ก์ ํธ ์ด๋ฆ์settings.gradle
ํ์ผ ์์rootProject.name = 'ํ๋ก์ ํธ์ด๋ฆ'
์ผ๋ก ์ ํ ์๋ค.
2. ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํํ๊ธฐ
gradle run
- gradle ๋๊ตฌ๊ฐ ํด๋์ค๋ฅผ ์คํํ๋ค.
- ์คํํ๋ ํด๋์ค๋ฅผ ๋ฐ๊ฟ ๋๋ง๋ค
build.gradle
์ ์ ์ด์ค์ผ ํ๋ค.
1
2
3
4
application {
// Define the main class for the application.
mainClassName = 'com.eomcs.pms.App'
}
- ๊ทธ๋ฌ๋ฉด ๊ท์ฐฎ์ง ์๋?? => ์ค๋ฌด์์ ์๋ฌด๋ฆฌ ๋ง์ ํ์ผ์ ๋ง๋ค์ด๋ ์คํํ๋ ํด๋์ค๋ ํ๋๋ฐ์ ์์(main)!
3. ์๋ฐ ํ๋ก์ ํธ ๋น๋ํ๊ธฐ
- ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํ ํ์ผ์ ๋ง๋ ๋ค
- ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ์ ํ์ผ๋ก ํจํนํ๋ ๊ณผ์
gradle build
๋น๋ ์ ์ฐจ
- ์์ค ํ์ผ ์ปดํ์ผ
- ๋จ์ ํ ์คํธ ์ํ
- .jar ์์นด์ด๋ธ ํ์ผ ์์ฑ
- ์คํ๊ณผ ๊ด๋ จ๋ ํ์ผ ์์ฑ
- .tar, .zip ๋ฐฐํฌ ํ์ผ ์์ฑ
๋น๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด /build/distributions/
์ ๋ฐฐํฌํ์ผ์ด ์๊ธด๋ค.
1
2
3
4
โโโ build
โย ย โโโ distributions
โย ย โย ย โโโ bitcamp-java-project.tar <== Unix/Linux ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํ๋ ํ์ผ
โย ย โย ย โโโ bitcamp-java-project.zip <== Windows ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํ๋ ํ์ผ
๋ฐฐํฌ ํ์ผ์ ์์ถ์ ํ๊ณ ๊ทธ ์์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํํด๋ณด์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
โ distributions git:(master) โ tar -xvf *.tar <== ์์ถํ์ผ ํธ๋ ๋ช
๋ น์ด
โ distributions git:(master) โ cd bitcamp-java-project
โ bitcamp-java-project git:(master) โ tree
.
โโโ bin
โย ย โโโ bitcamp-java-project
โย ย โโโ bitcamp-java-project.bat
โโโ lib
โโโ bitcamp-java-project.jar
โโโ checker-qual-2.11.1.jar
โโโ error_prone_annotations-2.3.4.jar
โโโ failureaccess-1.0.1.jar
โโโ guava-29.0-jre.jar
โโโ j2objc-annotations-1.3.jar
โโโ jsr305-3.0.2.jar
โโโ listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
2 directories, 10 files
โ bitcamp-java-project git:(master) โ cd bin
โ bin git:(master) โ ./bitcamp-java-project <== ์คํฌ๋ฆฝํธ ํ์ผ ์คํ
Hello world.
- ์ด๋ Windows os์ ๊ฒฝ์ฐ batํ์ผ์ ์คํํ๋ค.
- ํนํ ์ฐ๋ฆฌ๊ฐ ๋ง๋ app.class ๊ฐ lib์์ bitcamp-java-project.jar์ ์๋ค.
- ์ฌ๊ธฐ์ ์๋ app.class๋ฅผ ์คํํ๋ ๋ช ๋ น์ด๊ฐ bin์ ์๋ ๊ฑฐ!!! => ์ด๊ฒ ๋ฐ๋ก shell script์ด๋ค.
- ์ด ์คํฌ๋ฆฝํธ๋ ๊ณ ๊ฐ ์ปดํจํฐ๊ฐ ์ด๋ค์ง ๋ชจ๋ฅด๋๊น ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๋ฐ์ ธ๋ด์ ์คํํ ์ ์๊ฒ ๋ง๋ค์ด์ก๋ค.
- ๊ฐ๋ฐ์๋ผ๋ฉด ๊ทธ๋ฅ jvm์ java ๋ช ๋ น์ด๋ก ์คํํ ์ ์๊ฒ ์ง๋ง ๋น๋๋ ์ผ๋ฐ ์ฌ์ฉ์๋ฅผ ์ํด ๋ฐฐํฌํ์ผ์ ๋ง๋๋ ๊ณผ์ ์ด๋ค.
gradle clean
: ๋น๋ํ ๊ฑธ ์ญ์ ํ๋ ๋ช ๋ น์ด