๐Ÿ’พ.knwldg

Java Project ๋œฏ์–ด ๊ณ ์น˜๊ธฐ - #1

Morgenmuffel 2021. 7. 20. 03:18

์ƒ๊ฐ๋ณด๋‹ค ๋นจ๋ฆฌ ๋‹ค์‹œ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๋๋„ค์š”!

์‚ฌ์‹ค ๋‹ค๋ฅธ๊ฒŒ ๋„ˆ๋ฌด ํ•˜๊ธฐ ์‹ซ์–ด์„œ ์ด๊ฑธ ๊ฑด๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜€

 

๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ 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

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.

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

๋ฅผ ํ•˜๋ฉด!

๋„ค ๋‹น์—ฐํžˆ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ํ•˜๋‚˜๋„ ์ถ”๊ฐ€ํ•ด์ฃผ์ง€ ์•Š์•˜๊ฑฐ๋“ ์š”๐Ÿ˜€

๋Œ€์‹  ์ค‘๊ฐ„์— ํ•œ๊ธ€๋กœ ๋„ฃ์€ ์ฃผ์„์ด ๊นจ์ง€๋Š” ์—๋Ÿฌ๊ฐ€ ์žˆ๊ธธ๋ž˜ ๊ทธ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ์€ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ , ๋‹ค์Œ๋ฒˆ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊นƒ์— ์˜ฌ๋ฆฌ๊ณ  ๋งˆ๋ฌด๋ฆฌ!

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋„ ๋‚˜๋ฆ„ ์ด์˜๊ฒŒ ์ ์–ด์ฃผ๋ฉด ์ง„์งœ ๋!