ํ•ด๋ฒ„๋‹ˆ 2023. 8. 21. 01:15
๋ฐ˜์‘ํ˜•

Spring ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ Type์„ Maven์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด Maven์€ ๋ญ˜๊นŒ? 

 

 

 

 

 

 

Maven

Maven์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋นŒ๋“œ์— ๋„์›€์„ ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. 

๊ทธ๋ฆฌ๊ณ  Maven์€ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

(ํ”„๋ ˆ์ž„์›Œํฌ๋ผ ์ •ํ•ด์ง„ ๋™์ž‘ ๋ฐฉ์‹์ด ์žˆ๋‹ค.(LifeCycle)

LifeCycle์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ถ”ํ›„ ๋‹ค๋ฅธ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค.)

 

https://velog.io/@dovnaldisn/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%99%80-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%9D%98-%EA%B3%B5%ED%86%B5%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ 

"๋‚ด๊ฐ€" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด๊ณ  "ํ”„๋ ˆ์ž„์›Œํฌ"๊ฐ€ ๋‚˜๋ฅผ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด๋‹ค.

velog.io

 

 

 

 

 

 

 

 

 

์ž์„ธํ•œ ์„ค๋ช…์„ ํ•˜๊ธฐ์— ์•ž์„œ, ๋นŒ๋“œ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

 

๋นŒ๋“œ๋ž€?

๋นŒ๋“œ : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋‹จ๊ณ„

์ด๋Ÿฌํ•œ ๋ณ€ํ™˜๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

๋นŒ๋“œ ๋„๊ตฌ๋ž€?

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ , ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด Maven, Gradle, Ant๊ฐ€ ์žˆ๋‹ค.

 

 

 

 

 

 

 

 

Maven

๋‹ค์‹œ Maven์œผ๋กœ ๋Œ์•„์™€๋ณด์ž.

Maven์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๊ณ  ๋นŒ๋“œํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

 

 

 

 

Maven ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

my-project/
|-- src/
|   |-- main/
|   |   |-- java/             # Java ์†Œ์Šค ์ฝ”๋“œ
|   |   |-- resources/        # ๋ฆฌ์†Œ์Šค ํŒŒ์ผ (ํ”„๋กœํผํ‹ฐ, ์„ค์ • ํŒŒ์ผ ๋“ฑ)
|   |-- test/
|       |-- java/             # ํ…Œ์ŠคํŠธ์šฉ Java ์†Œ์Šค ์ฝ”๋“œ
|       |-- resources/        # ํ…Œ์ŠคํŠธ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ
|-- target/                   # ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ ์ €์žฅ ํด๋”
|-- pom.xml                   # ํ”„๋กœ์ ํŠธ ์„ค์ • ํŒŒ์ผ

Maven ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋Š” ์œ„์™€ ๊ฐ™์ด ๋˜์–ด ์žˆ๋‹ค.

 

 

 

 

 

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋„๊ตฌ๊ฐ€ ์™œ ํ•„์š”ํ•ด์กŒ์„๊นŒ? ์ด ๋„๊ตฌ๊ฐ€ ์™œ ๋งŒ๋“ค์–ด์กŒ์„๊นŒ?

โ“๊ถ๊ธˆ์ฆโ“

 

โ–ถ๏ธ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋‹ค ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ์กด์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•œ ๊ฐœ๋ผ๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ˆ˜์‹ญ ๊ฐœ๊ฐ€ ๋œ๋‹ค๋ฉด? ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ด๋‹ค.

(๋ฒ„์ „ ๊ด€๋ฆฌ, ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ ๋“ฑ๋“ฑ)

๊ทธ๋ž˜์„œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด ์ค„ Maven ๋„๊ตฌ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด๋‹ค.

 

 

 

Maven์— pom.xml์ด ์žˆ๋Š”๋ฐ pom.xml ํŒŒ์ผ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด๋‘๋ฉด,

Maven์ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์šด๋กœ๋“œํ•ด ์ค€๋‹ค.

 

 

 

 

 

๊ทธ๋ ‡๋‹ค๋ฉด, pom.xml์ด๋ž€?

pom.xml (Proejct Object Model)

Maven ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ํŒŒ์ผ.

ํ”„๋กœ์ ํŠธ์˜ ์ •๋ณด, ์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋นŒ๋“œ ์„ค์ • ๋“ฑ์„ XML ํ˜•์‹์œผ๋กœ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.6</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>springapp1-1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>springapp1-1</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

 

 

์œ„๋Š” ์˜ˆ์ „์— spring boot ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์˜ pom.xml์ด๋‹ค.

๋‹ค์‹œ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•˜์ž๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค.

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- ํ”„๋กœ์ ํŠธ ์ •๋ณด -->
    <groupId>com.example</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0.0</version>
    
    <!-- ์˜์กด์„ฑ ๊ด€๋ฆฌ -->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.9</version>
        </dependency>
        <!-- ... ๋‹ค๋ฅธ ์˜์กด์„ฑ ... -->
    </dependencies>
    
    <!-- ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ • -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- ... ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ ... -->
        </plugins>
    </build>
    
    <!-- ... ๋‹ค๋ฅธ ์„ค์ • ... -->
</project>

 

 

 

 

 

<modelVersion></modelVersion>  

Mven์˜ ๋ชจ๋ธ ๋ฒ„์ „์„ ์˜๋ฏธํ•œ๋‹ค. 

์ฆ‰, pom.xml์˜ ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

<groupId></groupId>

์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ID๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ณณ

ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๊ทธ๋ฃน๋ช…์œผ๋กœ ์ œ์ž‘์ž์™€ ํšŒ์‚ฌ, ๋‹จ์ฒด ๋“ฑ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ.

 

 

<artifactId></artifactId>

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ณ ์œ  ID๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์†Œ๋ฌธ์ž๋กœ๋งŒ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

 

<version></version>

ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„์ „์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

<packaging></packaging>

ํŒจํ‚ค์ง• ์ข…๋ฅ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณณ

๋ณดํ†ต zip, jar, war๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

<name></name>

ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋Š” ๊ณณ

 

 

<dependencies></dependencies>

์ด ํƒœ๊ทธ ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ <dependency></dependency>๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ, ์ด <dependency>๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ํƒœ๊ทธ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

<dependency></dependency>

ํ”„๋กœ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋“ฑ๋กํ•˜๋Š” ํƒœ๊ทธ์ด๋‹ค.

<dependency>
           <groupId>io.jsonwebtoken</groupId>
           <artifactId>jjwt-impl</artifactId>
           <version>0.11.5</version>
           <scope>runtime</scope>
</dependency>

 

 

<scope></scope>

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด์šฉ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ.

์œ„ xml์„ ์˜ˆ๋ฅผ ๋“ค๋ฉด, runtime ํ• ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์ง€์ •ํ•œ ๊ฒƒ์ด๋‹ค.

 

 

<profiles></profiles>

์ด ํƒœ๊ทธ๋Š” <profile>ํƒœ๊ทธ๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

<profile></profile>

ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ / ๊ฐœ๋ฐœ / ์šด์˜์— ๋”ฐ๋ผ์„œ pon.xml์˜ url์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ณณ์ด๋‹ค.

 

 

 

 

 

 

 

 

 

 

์ฐธ์กฐํ•œ ๊ธ€

https://goddaehee.tistory.com/199

 

[Maven] Maven ์ด๋ž€? (์ •์˜, ์˜ˆ์ œ)

[Maven] ๋ฉ”์ด๋ธ ์ด๋ž€? (์ •์˜, ์˜ˆ์ œ) ์•ˆ๋…•ํ•˜์„ธ์š”. ๊ฐ“๋Œ€ํฌ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ [ ๋ฉ”์ด๋ธ ์•Œ์•„๋ณด๊ธฐ ] ์ž…๋‹ˆ๋‹ค. : ) 1. ๋นŒ๋“œ (Build) #1 ๋นŒ๋“œ๋ž€? - ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ์†Œํ”„ํŠธ์›จ

goddaehee.tistory.com

 

https://yongku.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring-pomxml%EC%9D%98-%EA%B5%AC%EC%A1%B0

 

[์Šคํ”„๋ง(Spring)] pom.xml์˜ ๊ตฌ์กฐ

pom.xml์€ Maven ๊ตฌ์กฐ์—์„œ Maven์˜ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ฉด์„œ, ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Maven์ด ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ, pom.xml์€ ์ด Maven์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๋นŒ๋“œ

yongku.tistory.com

 

๋ฐ˜์‘ํ˜•