* Maven์ ๊ฐ๋
Maven์ด๋ ๋น๋(build) ํด์ ์ผ์ข ์ด๋ค. ๋น๋๋ ์์ค ์ฝ๋ ํ์ผ์ JVM์ด๋ WAS๊ฐ ์ธ์ํ ์ ์๋ ๊ตฌ์กฐ๋ก ํจํค์ง ํ๋ ๊ณผ์ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋งํ๋ค. ๋ฉ์ด๋ธ์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ์์ฑ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ , ์ฝ๋ ์์ ๋ฑ์ ์ฝ๊ฒ ํ ์ ์๋ค. ์ดํด๋ฆฝ์ค์ ๊ฐ์ IDE์์๋ ํ๋ก์ ํธ ์์ฑ ๋ฑ์ ํ ์ ์์ง๋ง IDE๋ ๋น๋ ํด๊ณผ๋ ๋ค๋ฅด๋ค. ๋น๋ ํด์ด ๋น๋ ๊ณผ์ ์์์ ํ๋ก์ ํธ ์์ฑ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ๋ฑ์ ๊ด์ฌํ ์ ์๋ค๋ฉด IDE๋ ๋ ๋ค์ํ ๋ฒ์๋ฅผ ํฌ๊ดํ๋ ๋ ํฐ ๋จ์์ ๋๊ตฌ์ด๋ค. IDE๋ ํ์๊ด๋ฆฌ, ๋๋ฒ๊ฑฐ, ์ปดํ์ผ๋ฌ, ํ์๊ธฐ, ์ฝ์, ํธ์ง๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ํฌํจํ๋ค. Maven์ ํน์ ํ IDE์ ์ข ์๋ ๊ฒ์ด ์๋๋ฉฐ ์ดํด๋ฆฝ์ค, Visual Studio Code, IntellijJ ๋ฑ ์ฌ๋ฌ IDE๋ ์ ๋ถ ๋ฉ์ด๋ธ์ ์ด์ฉํ ์ ์๋ค.
* Maven ์ค์นํ๊ธฐ
maven.apache.org/download.cgi ์์ Binary zip archive ํ์ผ ๋ค์ด๋ก๋ (apache-maven-3.6.3-bin.zip)
C:\apache-maven-3.6.3-bin\apache-maven-3.6.3\bin\mvn ์คํํ๊ธฐ ์ํด ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ ํ ์ฝ์์ฐฝ์์ ์คํํ๋ค.
์์คํ ๋ณ์์ M2_HOME์ apache-maven-3.6.3 ์ค์ ํ๊ณ (bin ํด๋๋ณด๋ค ํ๋ ์์), path์ %M2_HOME%\bin์ ์ค์ ํ๋ค. ์ฝ์์ฐฝ์์ mvn -version์ ์ ๋ ฅํ์ฌ ์ ๋๋ก ์ค์ ๋์๋์ง ํ์ธํ ์ ์๋ค.
* mvn -version ์คํ ์๋ฌ
โป The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
๋์ ๊ฒฝ์ฐ ์ด ์๋ฌ๊ฐ ๋ฐ์ํ์๋๋ฐ, JAVA_HOME์ jdk๊ฐ ๋ ๊ฐ์ง ์ค์ ๋์ด ์์ด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค.


์ด์ ๋ ์ ํํ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฝ์์ฐฝ์ set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_261๋ฅผ ์ ๋ ฅํด์ ๋ค์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๊ณ ํ์ธํ๋๋ ์ ๋์๋ค. ์ผ์์ ์ธ ํด๊ฒฐ๋ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ ๋ค๋ฅธ ๊ฑธ ๊ฑด๋๋ฆฌ์๋ ํน์ฌ๋ ๋ฌธ์ ๊ฐ ์๊ธธ๊น๋ด ์ผ๋จ์ ์ด๋ ๊ฒ ํด๊ฒฐํ๋ค.
* IDE ์์ด Maven ํ๋ก์ ํธ ์์ฑํ๊ธฐ
์๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ ํ,
mvn archetype:generate -DgroupId=com.newlecture -DartifactId=javaprj -DarchetypeArtifactId=maven-archetype-quickstart ์ ๋ ฅ
archetypeArtifactId ์ต์ ์ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ maven-archetype-quickstart ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ด๊ฐ ๋ฉ์ด๋ธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์๋ค๋ ๋ป์ด๋ค. ๋ฐ๋๋ก ๋ด๊ฐ ๋ง๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฐฐํฌํ ์๋ ์๋ค. (=>๋ฉ์ด๋ธ์ ํน์ง, ์ฅ์ )
โป ์ฐธ๊ณ . ์ฝ์์ฐฝ cd(change directory) ๊ด๋ จ ๋ช ๋ น์ด
cd.. => ํด๋ ํ ๋จ๊ณ ์๋๋ก ์ด๋
cd ํด๋๋ช => ์ํ๋ ์์ ํด๋๋ก ์ด๋ (ex. C๋๋ผ์ด๋ธ ์์์ cd maven)
cd\ => ๋ฃจํธ ํด๋๋ก ์ด๋
d: => D๋๋ผ์ด๋ธ๋ก ๋ณ๊ฒฝ (๋๋ c:)
์ํฐ์ณ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ง ๋ค์ด๋ก๋, ์ ๋ ฅ ๊ณผ์ ์ด ์งํ๋๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌ๋ค๋ฉด ์ฐ๋์ BUILD SUCCESS๋ฅผ ํ์ธํ ์ ์๋ค.
dir์ ์ ๋ ฅํ๊ฑฐ๋ ํ์๊ธฐ๋ฅผ ์ด์ด์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋์๋์ง ํ์ธํ ์ ์๋ค.
javaprj ๋ฐ์๋ pom.xml์ด ์์ฑ๋์์ผ๋ฉฐ, javaprj\src\main\java\com\newlecture ์์ App.java๋ผ๋ ๊ธฐ๋ณธ ์์ค๋ ์์ฑ๋์๋ค. (Hello world!)
์ฝ์์ฐฝ์์ ์ปดํ์ผ ๋ฑ์ ์์ ์ ํ๊ธฐ ์ํด์๋ pom.xml์ด ์๋ ๊ฒฝ๋ก, ์ด ๊ฒฝ์ฐ javaprj์์ ์คํํด์ผ ํ๋ค.
App.java์ ์์ค ์ฝ๋๋ฅผ ์์ ํ ํ mvn compile์ ์ ๋ ฅํ๋ฉด ์ปดํ์ผ ํ ์ ์๋ค.
๋น๋ ์คํจํ์ ๊ฒฝ์ฐ pom.xml์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ค์ ์ปดํ์ผ ํ๋ฉด ๋๋ค.
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
์ฝ์์ฐฝ์์ mvn package๋ฅผ ์ ๋ ฅํ๋ฉด ํจํค์ง ์์ ์ ์ํํ์ฌ target ํด๋ ์์ jar ํ์ผ์ด ๋ง๋ค์ด์ง๋ค.
target\classes ์์ ํด๋์ค ํ์ผ๋ก๋ ์คํ์ด ๊ฐ๋ฅํ๊ณ , jar ํ์ผ๋ก๋ ์คํ์ด ๊ฐ๋ฅํ๋ค.
1) ํด๋์ค ํ์ผ ์ด์ฉํ์ฌ ์คํํ๊ธฐ
target\classes ํด๋ ์์์ [ํจํค์ง๋ช .ํ์ผ๋ช ]์ผ๋ก ์คํํด์ผ ํ๋ค.
2) jar ํ์ผ ์ด์ฉํ์ฌ ์คํํ๊ธฐ
-cp์ผ๋ก ํด๋์ค ํจ์ค ๋๋ ํ ๋ฆฌ ์ง์ ํ๊ณ jar ํ์ผ ์ com.newlecture.App java ํ์ผ์ ์คํํ๋ค.
* Build LifeCycle๊ณผ Phase๋ค
mvn compile, mvn test, mvn package ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ, ํ ์คํธ, ํจํค์ง ๋ฑ์ ์ํํ ์ ์๋๋ฐ ์ด๋ฌํ ๊ฒ๋ค์ ๋จ๊ณ(phase)๋ผ๊ณ ํ๋ค. compile, test, package๊ฐ ์ํ ๋จ๊ณ์ ํด๋นํ๋ค.
์ด๋ค ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค๋ฉด ๊ทธ ์ ๋จ๊ณ๋ถํฐ ์ ๋ถ ์คํ๋๋ค. ์๋ฅผ ๋ค์ด mvn compile์ ํ๋ค๋ฉด validate, initialize ๋ฑ ์ ๋จ๊ณ๋ค์ ์๋์ผ๋ก ์ํ๋๋ค.
์ด๋ฌํ ๋จ๊ณ๋ค์ pom.xml์ ์ ์๋ <packaging>์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ผ๋ (pom, jar, war ๋ฑ...) ๋๋ถ๋ถ ๋น์ทํ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค.
pom(project object model) ํ์ผ์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๋ด์ฉ์ ๋ชจ๋ธ๋ก ๊ฐ์ง๊ณ ์๋ค. pom์ ๋ณ๊ฒฝํ๋ฉด ํ๋ก์ ํธ์ ์ค์ ์ด ๋ฌ๋ผ์ง ์ ์๋ค.
๋ฉ์ด๋ธ์ ๊ฐ ๋จ๊ณ๋ฅผ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ผ๋ก ๋์ด๋์๋ค. ๋จ๊ณ๋ง๋ค ๋จ๊ณ๋ฅผ ์คํํ๋ ํ๋ก๊ทธ๋จ์ด ๋ฐ๋ก ์์ด์ ํ๋ฌ๊ทธ์ธ์ฒ๋ผ ๋บ๋ค ๊ฝ์๋ค ํ ์ ์๊ฒ ๋์ด ์๋ค.
์ ๊ทธ๋ฆผ์์ ํ๋ ๊ธ์จ(process-resources, compile ๋ฑ) ๋จ๊ณ๋ ์ด๋ ํ ์ค์ ๋ ํ์ง ์์์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋๋ ๋จ๊ณ์ด๋ฉฐ, ๊ฐ ๋จ๊ณ์ ํด๋นํ๋ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋จ(Plug-in)์ด ๋งคํ๋์ด ์๋ค. ์ค์ ๋์ง ์์ ๋ค๋ฅธ ๋จ๊ณ๋ค์ ํ๋ฌ๊ทธ์ธ ์ค์ ์ pom.xml์์ ํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ ์ค์ ๋ ๋จ๊ณ๋ pom.xml์์ ์์ ํ ์ ์๋ค. ํ๋ฌ๊ทธ์ธ์ ๋ด๋ถ์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ ์๋ ํ๋ก๊ทธ๋จ์ด ์๋๋ฐ ๊ทธ๊ฒ์ Goal์ด๋ผ๊ณ ํ๋ค(์ฐ๋์ ๊ธ์จ).
mvn hepl:describe -Dcmd=compile ๋ช ๋ น์ด๋ก ๋จ๊ณ๋ณ ํ๋ฌ๊ทธ์ธ์ ํ์ธํ ์ ์๋ค.
(๋ฉ์ด๋ธ์์ ์ ๊ณตํ๋ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ ์ฐธ๊ณ . maven.apache.org/plugins/index.html)
๋ฉ์ด๋ธ๋ง ์ฌ์ฉํด์ ํธ์งํ๊ฑฐ๋ ๋๋ฒ๊ทธ ํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก ์ดํ์๋ ์ดํด๋ฆฝ์ค์์ ๋ฉ์ด๋ธ์ ์น์ด์ ์ฌ์ฉํ๋๋ก ํ๋ค.
'๐ปStudy > Others' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Maven] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๋ฅ / ์ธ๋ฑ์ค / ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์ ๋ง๋ค์ด์ ์ค์นํ๊ธฐ (0) | 2021.02.24 |
---|---|
๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2021.02.22 |
์ปดํจํฐ ๊ตฌ์กฐ (0) | 2021.02.18 |
์ ๋ณด์ ํํ, ๋ถ ๋์์ ๋์งํธ ๋ ผ๋ฆฌ (0) | 2021.02.16 |
์ปดํจํฐ์ ๊ฐ์์ ์ปดํจํฐ ๊ณผํ (0) | 2021.02.16 |