๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

1.4 Maven

1) Maven ์ด๋ž€?

Maven์ด๋ž€?

Maven์€ ์ง€๊ธˆ๊นŒ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง„ํ–‰ํ•ด์™”๋˜ ์ž‘์—…๋“ค์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋“ฑ์žฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Maven์„ ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ(Build), ํŒจํ‚ค์ง•, ๋ฌธ์„œํ™”, ํ…Œ์ŠคํŠธ์™€ ํ…Œ์ŠคํŠธ ๋ฆฌํฌํŒ…, git, ์˜์กด์„ฑ๊ด€๋ฆฌ, svn๋“ฑ๊ณผ ๊ฐ™์€ ํ˜•์ƒ๊ด€๋ฆฌ์„œ๋ฒ„์™€ ์—ฐ๋™(SCMs), ๋ฐฐํฌ ๋“ฑ์˜ ์ž‘์—…์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Maven์„ ์ดํ•ดํ•˜๋ ค๋ฉด CoC(Convention over Configuration)๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋จผ์ € ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CoC๋ž€ ์ผ์ข…์˜ ๊ด€์Šต์„ ๋งํ•˜๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์ŠคํŒŒ์ผ์€ ์–ด๋–ค ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๊ณ , ์†Œ์Šค๊ฐ€ ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ๋“ค์€ ์–ด๋–ค ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๊ณ  ๋“ฑ์„ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†จ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ง์€ ๊ด€์Šต์— ์ด๋ฏธ ์ต์ˆ™ํ•œ ์‚ฌ์šฉ์ž๋Š” ์‰ฝ๊ฒŒ Maven์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ด€์Šต์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์ œ์•ฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ์‹ฌํ•œ ๊ฑฐ๋ถ€๊ฐ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Maven์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์–ด์ฉŒ๋ฉด ์ด๋Ÿฌํ•œ ๊ด€์Šต ์ฆ‰ CoC์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด๋ผ๊ณ ๋„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Maven์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์–ป๊ฒŒ ๋˜๋Š” ์ด์ ์€?

Maven์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๊ต‰์žฅํžˆ ํŽธ๋ฆฌํ•œ ์ ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ๋žŒ์ด ์†๊ผฝ๋Š” ์žฅ์  ์ค‘์—๋Š” ํŽธ๋ฆฌํ•œ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ž์—์„œ JSTL์„ ํ•™์Šตํ•  ๋•Œ, ๋ช‡ ๊ฐ€์ง€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ /WEB-INF/libํด๋”์— ๋ณต์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์ƒ๋‹นํžˆ ๋ถˆํŽธํ•ด์ง‘๋‹ˆ๋‹ค.

Maven์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ค์ • ํŒŒ์ผ์— ๋ช‡ ์ค„ ์ ์–ด์คŒ์œผ๋กœ์จ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒƒ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ์•„์ง€๊ฒŒ ๋˜๋ฉด, ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ๊ฐ€์ด๋“œํ•˜๋Š” ๊ฒƒ๋„ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

Maven์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด Maven์— ์„ค์ •ํ•œ ๋Œ€๋กœ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Maven์€ ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•ด์ค˜์„œ, ๊ต‰์žฅํžˆ ๋งŽ์€ ์ผ๋“ค์„ ์ž๋™ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Maven ๊ธฐ๋ณธ

Archetype์„ ์ด์šฉํ•˜์—ฌ Maven ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ํ•˜์œ„์— pom.xml ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

pom.xml ํŒŒ์ผ์—์„œ ๊ฐ๊ฐ์˜ ํƒœ๊ทธ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • project : pom.xml ํŒŒ์ผ์˜ ์ตœ์ƒ์œ„ ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ(Root Element)์ž…๋‹ˆ๋‹ค.

  • modelVersion : POM model์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

  • groupId : ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์กฐ์ง์˜ ๊ณ ์œ  ์•„์ด๋””๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๊ฑฐ๊พธ๋กœ ์ ์Šต๋‹ˆ๋‹ค.

  • artifactId : ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ์˜ํ•˜์—ฌ ์ƒ์„ฑ๋˜๋Š” artifact์˜ ๊ณ ์œ  ์•„์ด๋””๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. Maven์„ ์ด์šฉํ•˜์—ฌ pom.xml์„ ๋นŒ๋“œํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ artifact๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. artifactid-version.packaging. ์œ„ ์˜ˆ์˜ ๊ฒฝ์šฐ ๋นŒ๋“œํ•  ๊ฒฝ์šฐ examples-1.0-SNAPSHOT.jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • packaging : ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ค ํ˜•ํƒœ๋กœ packaging ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. jar, war, ear ๋“ฑ์ด ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

  • version : ํ”„๋กœ์ ํŠธ์˜ ํ˜„์žฌ ๋ฒ„์ „. ์ถ”ํ›„ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ผ ๋•Œ๋Š” SNAPSHOT์„ ์ ‘๋ฏธ์‚ฌ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Maven์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํŽธํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • name : ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

  • url : ํ”„๋กœ์ ํŠธ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ฌ์ดํŠธ URL์„ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Maven ์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ์–ป๊ฒŒ ๋˜๋Š” ํฐ ์ด์  ์ค‘์˜ ํ•˜๋‚˜๋Š” Dependency Management ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์œ„ pom.xml ํŒŒ์ผ์—์„œ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ Dependency Management ๊ธฐ๋Šฅ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์—˜๋ฆฌ๋จผํŠธ ์•ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


2) Maven์„ ์ด์šฉํ•œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹ค์Šต

์ฝ”๋“œ ์‹ค์Šต ๋งํฌ: mavenweb01
Maven์„ ์ด์šฉํ•ด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์‹คํ–‰ํ•ด๋ณด์•˜๋‹ค.

 

๊ฒช์—ˆ๋˜ ์˜ค๋ฅ˜

  • ๋‹ค์ด๋‚˜๋ฏน ์›น ๋ชจ๋“ˆ์„ 2.3์—์„œ 3.1๋กœ ๋ฐ”๊ฟ”์ง€์ง€ ์•Š๊ฑฐ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋‚  ๋•Œ

    • ํ”„๋กœ์ ํŠธ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ํƒํ•œ ํ›„ Maven๋ฉ”๋‰ด ์•„๋ž˜์˜ Java EE Integration์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Enable Project Specific Settings ์•ž์˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์˜ Apply and Close๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • WEB-INF์˜ pom.xml ์ˆ˜์ •ํ•˜๊ธฐ

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
      <display-name>Archetype Created Web Application</display-name>
      </web-app>
    • ํ”„๋กœ์ ํŠธ์•„๋ž˜์˜ .settings/org.eclipse.wst.common.project.facet.core.xml ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ์ด๋Š” Windows > Show veiw > Navigator๋กœ ํŒŒ์ผ์„ ๋ณด๋ฉด .settings ํŒŒ์ผ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์•ˆ์—์„œ 2.3 -> 3.1๋กœ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค.

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.19
2.1 Web๊ฐœ๋ฐœ์˜ ์ดํ•ด  (0) 2020.11.19
1.5 JDBC  (0) 2020.11.19
1.3 ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.09
1.2 SQL  (0) 2020.11.09
1.1 MySQL  (0) 2020.11.09