Java Project ๋ฏ์ด ๊ณ ์น๊ธฐ - #1
์๊ฐ๋ณด๋ค ๋นจ๋ฆฌ ๋ค์ ๊ฑด๋๋ฆฌ๊ฒ ๋๋ค์!
์ฌ์ค ๋ค๋ฅธ๊ฒ ๋๋ฌด ํ๊ธฐ ์ซ์ด์ ์ด๊ฑธ ๊ฑด๋๋ฆฌ๊ณ ์์ต๋๋ค๐
๊ฐ์ฅ ๋จผ์ ํ ์ผ์ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ gradle๋ก ๋น๋ํ ์ ์๊ฒ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ผ ํ๋๋ฐ์.
๋ชจ๋ ๊ฒ ๊ท์ฐฎ์ผ๋, ๊ทธ๋ฅ ํด๋ ๋ด์ฉ๋ฌผ์ ์น ๋ ๋ ค๋ฒ๋ฆฌ๋๋ก ํฉ์๋ค.
gradle ์ด๊ธฐ ์ธํ ์ ์๋ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.
gradle ๋ฒ์ ์ด ํ์ด์ง์ ๋์จ ๊ฒ๊ณผ ๋ฌ๋ผ์ ์ผ๋จ ์ต์ ๋ฒ์ ์ผ๋ก ์ค์น๋ถํฐ ํด์ฃผ์์ต๋๋ค.
์ค์นํ๋ ํ์ด์ง ๋งํฌ๊น์ง ์๋ ๋์์์ต๋๋ค!
Building Java Applications Sample
From inside the new project directory, run the init task using the following command in a terminal: gradle init. When prompted, select the 2: application project type and 3: Java as implementation language. Next you can choose the DSL for writing buildscri
docs.gradle.org
์ญ์ ์ฐธ๊ณ ํ ๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋๊ฒ ์ต๊ณ ์ฃ ๐
๋ธ๋ก๊ทธ์ ์ธ ๋ด์ฉ ์์ ํ๋๊ฑด ์๋์ฐ์์ ํ๋๊ฒ ํธํด์ ์ ๋ ์๋์ฐ์์ ํ์ง๋ง
๋ค๋ฅธ OS์์ ํ์๋ ๋ถ๋ค์ ์ ๋ด์ฉ๋ณด๋ค๋ ์ ํ์ด์ง๋ฅผ ๋ณด์๋ฉด์ ํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
์ ๊ธฐ์กด์ ๊น๊ณผ ์ฐ๋ํด ๋ ํด๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ก ํด๋๋ฅผ ๋ง๋ค์ง ์์๊ตฌ์
ํ๋ก์ ํธ๋ฅผ ์์ํ ํด๋ ์์์
gradle init
๋ช ๋ น์ด๋ฅผ ์คํํด ์ค๋๋ค.
์ด๋ค type์ project๋ฅผ ๋ง๋ค ๊ฒ์ธ์ง, ์ธ์ด๋ ๋ญ๋ฅผ ์ธ๊ฑด์ง ๋ฑ๋ฑ์ ์ ํํ๋ ์ ํ์ง๋ค์ด ์ญ ๋์ค๋๋ฐ
์ฌ๊ธด ๊ฐ์ ํ์ํ ๋ด์ฉ์ ๋ง๊ฒ ์ ํํด์ฃผ์๋ฉด ๋ฉ๋๋ค!
์ฌ์ค test ์ฝ๋ ๊ฐ์๊ฒ ํ์ ์์ด์ ์ด ๋ฐฉ๋ฒ์ ์์ฐ๊ณ ํด๋ณด๋ ค๊ณ ํ๋๋ฐ
์ธํ ํ์ผ ๊ฐ์๊ฑฐ ๋ง๋ค์ด์ฃผ๊ธฐ๋ ๊ท์ฐฎ์์... ๊ทธ๋ฅ ์จ๋ฒ๋ ธ์ต๋๋ค ํํ
์ ์์ ์ผ๋ก ์ํ๋์๋ค๋ฉด, ํด๋ ๊ตฌ์กฐ๊ฐ ์๋์ ๊ฐ์ด ๋์ด์์ํ ๋ฐ์
์ด๊ฑด ํ์ผ๊น์ง๋ ๋ณด์ฌ์ฃผ์ง ์์์... ํด๋๋ง ๋ณด์ฌ์ฃผ์ง๋ง docs์ ๋์์๋ ํด๋ ๊ตฌ์กฐ์ ๋์ผํ๋ ๋์ด๊ฐ๋๋ก ํฉ์๋ค.
์ฐธ๊ณ ๋ก ์ ๋ณต์กํ ๋ช ๋ น์ด๋
tree๋ช ๋ น ์์ด ls๋ก treeview๋ก ๋ณด๊ธฐ(Treeview without tree command as ls)
Security engineer, Developer and H4cker
www.hahwul.com
์ ๋ด์ฉ์ ์ฐธ๊ณ ํ ๊ฒ์ ๋๋ค. ์ ํ๋ฉด์ด ํด๋์์ Git Bash๋ฅผ ์คํ์ํจ๊ฑฐ๋ผ tree๊ฐ ์๊ฑฐ๋ ์๐ฅ
์๋์ฐ๋ฅผ ์ฐ๋ฉด์ ๋ช ๋ น์ด๋ Git Bash์์ ์ํํ๋ ๋๋ ์ฌ๋... ๋์ฐํ ํผ์ข ...
๋ญ ๊ทธ๊ฑด ์ค์ํ๊ฒ ์๋๋...
๊ทธ ๋ค์ ํด์ผํ ์ผ์ ๊ธฐ์กด ์์ค์ฝ๋๋ฅผ ๋ณต๋ถํด ๋ฃ๋ ์ผ์ ๋๋ค.
์๋ ์์ฑ๋ ํด๋์ ํ์ผ์ ๋ณด๋ฉด, app/src/main/java/controller_input_test ์๋์ App.java ํ์ผ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด์ฉ๋ฌผ์ ๋ณด๋ฉด
์ด๋ฐ ์์ ์์ ์ฝ๋๊ฐ ๋ค์ด์๋๋ฐ์,
์ผ๋จ ์ ๊ธฐ์กด์ ์๋ ์ฝ๋๋ฅผ ๋ณต๋ถํด ๋ฃ์๊ฑฐ๊ณ ํด๋์ค ์ด๋ฆ์ผ๋ก๋ ์ ๊ฑธ ์ฐ์ง ์์ ์์ ์ ๋๋ค.
ํด๋์ค ์ด๋ฆ์ ๊ณ ์น๋ฉด ๋น์ฐํ ํ์ผ ์ด๋ฆ๋ ๋ฐ๊ฟ์ผ๊ฒ ์ฃ
๊ทธ๊ฑด ๋ Bash์์ ํ๊ธฐ ๊ท์ฐฎ์ผ๋ ์๋์ฐ์์ ํ๋ฑ ์์ ํด์ค๋๋ค.
๋์ ์ ์ฒ๋ผ ๋์์ง์ ํ์ จ์ผ๋ฉด ์์ ํด์ฃผ์ ์ผ ํ ๊ฒ ์๋๋ฐ ๋ฐ๋ก app/build.gradle ํ์ผ์ ๋๋ค.
ํด๋น ํ์ผ์ ํ์ฌ ๋ด์ฉ์ ๋ณด๋ฉด ์๋์ ๊ฐ์๋ฐ์.
๋งจ ์๋์ชฝ์ ๋ณด์๋ฉด
mainClass = 'controller_input_test.App'
์ด๋ผ๊ณ ๋์ด ์๋ ๋ถ๋ถ์ด ์์ต๋๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์ main class๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ธ๋ฐ,
์ ๊ฐ์ ๊ฒฝ์ฐ main class๊ฐ ํฌํจ๋์ด ์๋ App class๋ฅผ ์ง์๋ฒ๋ฆฌ๊ณ
์ ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ControllerInputTest๋ผ๋ class๋ฅผ ์ฌ์ฉํ์ผ๋ ์ ๋ถ๋ถ์
mainClass = 'controller_input_test.ControllerInputTest'
๋ก ์์ ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ ์์ฑ๋ ํ์ผ๋ค ์ค์ test ํด๋์ App class๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด ์๋๋ฐ,
test๋ฅผ ํด์ค ํ๋ก์ ํธ๋ ์๋๊ธฐ ๋๋ฌธ์(GUI ํ๋ก๊ทธ๋จ์ด๋ผ ํ ์คํธ๋ฅผ ํด๋ณผ์๊ฐ ์์ต๋๋ค ์์)
๋ชจ๋ฅธ์ฒํ๊ณ ๋์ด๊ฐ๊ธฐ๋ก ํฉ.... ํ์ง๋ง ์ ๊ฒฝ์ด ์ฐ์ด๋ค์
https://www.baeldung.com/gradle-skip-tests
์ด ๋ด์ฉ์ ์ฐธ๊ณ ํด์ ๊ธฐ์กด test ๋ด์ฉ์ ๊ทธ๋ฅ true๋ฅผ returnํ๋ ๋ฌด์๋ฏธํ ํ ์คํธ๋ก ์์ ํด ์ฃผ์์ต๋๋ค.
ํ ์คํธ ํด๋์ค ์ด๋ฆ ์ ํ๋ ๊ท์น์ ์์ง ์ ๋ชฐ๋ผ์ AppTest๋ฅผ ๊ทธ๋ฅ ControllerInputTestTest๋ก ์ฐ๊ฒ ๋์๋๋ฐ
๋์ค์๋ ํด๋์ค ์ด๋ฆ๋ ์ด์๊ฒ ๊ณ ์น๋๊ฑธ๋ก... ํ ํ
์ฌ๊ธฐ๊น์ง ํ๊ณ
gradle build
๋ฅผ ํ๋ฉด!
๋ค ๋น์ฐํ ์๋ฉ๋๋ค. ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ๋๋ ์ถ๊ฐํด์ฃผ์ง ์์๊ฑฐ๋ ์๐
๋์ ์ค๊ฐ์ ํ๊ธ๋ก ๋ฃ์ ์ฃผ์์ด ๊นจ์ง๋ ์๋ฌ๊ฐ ์๊ธธ๋ ๊ทธ ๋ถ๋ถ๋ง ์์ ํด ์ฃผ์์ต๋๋ค.
์ผ๋จ์ ์ฌ๊ธฐ๊น์ง ํ๊ณ , ๋ค์๋ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์์ ํ ๋ด์ฉ์ ๊น์ ์ฌ๋ฆฌ๊ณ ๋ง๋ฌด๋ฆฌ!
์ปค๋ฐ ๋ฉ์์ง๋ ๋๋ฆ ์ด์๊ฒ ์ ์ด์ฃผ๋ฉด ์ง์ง ๋!