Maven

Shinยท2023๋…„ 2์›” 7์ผ
0

Maven

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

Maven

Maven ์ด๋ž€, build tool!

๐Ÿ“Œ Bulid Tool

Build tool์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ 2๊ฐ€์ง€๊ฐ€ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค.

  • ant : ๊ฐ€์žฅ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ build tool ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๊ทผ์—๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ถ”์„ธ์ด๋‹ค.
  • maven : spring legacy project
  • gradle : spring boot ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

Build ๋ž€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ source code ๋ฅผ ์‹คํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ์ ์ธ ํ˜•ํƒœ๋„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณผ์ • + ๊ทธ ๋ฐ˜ํ™˜๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ ๋” ์ •ํ™•ํ•œ ์˜๋ฏธ๋กœ๋Š” ๊ทธ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค.

๋”ฐ๋ผ์„œ Build Tool ์ด๋ž€, ์ด๋Ÿฌํ•œ build ๊ณผ์ •์„ ์ˆ˜์›”ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” tool ์„ ์˜๋ฏธํ•œ๋‹ค.

Build ๊ณผ์ •

  1. Project ์ƒ์„ฑ
  2. Project์— ํ•„์š”ํ•œ Library ์„ค์ •
  3. source code ์ž‘์„ฑ
  4. compile ๊ณผ์ •. ํ•ด๋‹น ๊ณผ์ •์„ ํ†ตํ•ด source code ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰ java๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด .java ํŒŒ์ผ์ด ์‹คํ–‰๋˜์„œ .class ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.
  5. test ๊ณผ์ • : ์ž‘์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •
  6. packaging ๊ณผ์ • : ๋งŽ์€ ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์••์ถ•ํŒŒ์ผ๋กœ ์ €์žฅ.
  7. deploy, ๋ฐฐํฌ : ์™„์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์šด์˜ํ™˜๊ฒฝ์— ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ฆฐ๋‹ค.

=> ์ด๋Ÿฌํ•œ Buil ๊ณผ์ •์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” tool ๋“ค์ด build tool์ด๋‹ค.

Maven์€( ์ •ํ™•ํžˆ๋Š” build tool์€ ) ํŠน์ • IDE( ์ดํด๋ฆฝ์Šค, ์ธํ…”๋ฆฌ์ œ์ด ๋“ฑ๋“ฑ ) ์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค.

Maven Project


  • GroupId

    groupId ๋ž€, ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์‚ฌ์ด์—์„œ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹๋ณ„์ž ์—ญํ• ์„ ํ•˜๋Š” ID ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    ๋”ฐ๋ผ์„œ groupId ์—๋„ ๋„ค์ด๋ฐ ์Šคํ‚ค๋งˆ๊ฐ€ ์ ์šฉ๋˜๋„๋ก ํ•œ๋‹ค.

    1. groupId ๋Š” ํŒจํ‚ค์ง€ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    2. ํ•˜์œ„ ๊ทธ๋ฃน์€ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค.

      ex) org.apache.maven, org.apache.commons

  • ArtifactId

    artifactId ๋Š” ๋ฒ„์ „ ์ •๋ณด๋ฅผ ์ƒ๋žตํ•œ, jar ํŒŒ์ผ์˜ ์ด๋ฆ„์ด๋‹ค.

    • ์ด๋ฆ„์€ ์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•„๋ฌด๊ฑฐ๋‚˜ ์ •ํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.
    • ๋‹จ, ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ž‘์„ฑํ•˜๋„๋ก ํ•œ๋‹ค.
    • ๋‹จ, ํŠน์ˆ˜๋ฌธ์ž๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Version

    ์ˆซ์ž์™€ ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ผ๋ฐ˜์ ์ธ ๋ฒ„์ „ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(1.0,ย 1.1,ย 1.0.1, โ€ฆ).

    SNAPSHOT(nightly) ๋นŒ๋“œ ๋‚ ์งœ๋ฅผ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

    ์จ๋“œ ํŒŒํ‹ฐ ์•„ํ‹ฐํŒฉํŠธ๋ผ๋ฉด, (์ข€ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์–ด๋„) ๊ทธ๋“ค์˜ ๋ฒ„์ „ ๋„˜๋ฒ„๋ฅผ ์ด์–ด๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

๐Ÿ“Œ Terminal ์„ ์ด์šฉํ•œ Maven ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰, ๋ฐฐํฌ ๊ณผ์ •

  1. maven project ์ƒ์„ฑ

mvn archetype:generate -DgroupId=com.test -DartifactId=myProject -DarchetypeArtifactId=maven-archetype-quickstart

  1. compile ๊ณผ์ •

  1. pakage ๊ณผ์ •

๋งŒ์•ฝ ์ด์ „์— compile ๊ณผ์ • ๋“ฑ์„ ๊ฑฐ์น˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด, mvn pakage ๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์•Œ์•„์„œ ์ปดํŒŒ์ผ์„ ์‹คํ–‰ํ•œ ๋’ค, ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด artifactId ๋กœ ์„ค์ •ํ•œ ์ด๋ฆ„์œผ๋กœ jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

  1. Jar ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ

    -cp : java๊ฐ€ ํด๋ž˜์Šค๋ฅผ ์ฐพ๋Š” classPath

์ถœ์ฒ˜ : https://maven.apache.org/guides/mini/guide-naming-conventions.html

0๊ฐœ์˜ ๋Œ“๊ธ€