Programming/Spring framework

메이븐프로젝트의 식별자: 아티팩트ID 2021-10-13.

최동훈1 2021. 10. 13. 11:39

  나는 의문점이 들었다. 만약 똑같은 POM.xml 파일로 컴파일된 메이븐 프로젝트는 루트폴더의 이름만 바꾼뒤, 이클립스에 import가 될까?

이런 삽질? 을 한 이유는 메이븐 프로젝트를 구별할수있는 지표가 무엇인지 궁금했던거 같다.

 

그래서 난 chap03 의 POM.xml을 똑같이 사용해서 다시 만든 메이븐 프로젝트로 루트폴더이름만 다르게 해서 이클립스에 import 했을때는 이미 존재하는 아티팩트 ID 이기에 이클립스에 임포트 할수 없다고 나왔다. 

 

그래서 난 어? 그럼 아티팩트 ID만 바꾼다면 다시 삽입되지 않을까? 라는 생각과, 그렇다면 아티펙트 ID가 메이븐 프로젝트를 개별적으로 구별해주는 지표인가? 라는 궁금증이 들었다.

메이븐 설정파일인 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">
	<modelVersion>4.0.0</modelVersion>
	<groupId>sp5</groupId>
	<artifactId>sp5-chap03</artifactId> //이부분을 변경
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.0.2.RELEASE</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>utf-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

artifactId 있는 부분을 sp5-chap03 demo로 바꾸고 윈도우에서 컴파일 하였다.

그런데 컴파일이 안되었다.

바로 이름 명명규칙을 어겨서인거 같다.

그래서 아티펙트 ID에 sp5-chap03demo 이렇게 띄어쓰기를 없애고 컴파일하니, 정상적으로 컴파일 되었다.

 

** 또 알게된 사실이 있는데, 한번 컴파일 한 것은, 메이븐 프로젝트가 생성된다 는 뜻이다. 나는 그냥, 이클립스에 임포트할때 시간 줄일라고 미리 컴파일 해놓는것인줄 알았는데 그것이 아니라, 내가 생성한 sp5-chap03 demo 파일 을 루트폴더로 하는 메이븐 프로젝트를 이미 만들어버린 것이다.

이미 컴파일 후 완성되있는메이븐 프로젝트 루트폴더

즉, 이클립스에는 이미 "만들어져있는 메이븐 프로젝트"를 작업을 위해 넣어주기만 하는 것이다.

 

결론: 우리가 mvn compile 을 실행하면 실행 대상이되는 폴더를 루트폴더로 하는 하나의 메이븐 프로젝트가 만들어진다.

또한 메이븐 프로젝트를 구별짓는 식별자는, 그룹 ID, 아티팩트 ID, 버전 이 있고, 이것은 Pom.xml 파일에서 설정해준다.

이클립스에 같은 Pom.xml로 만들어진 메이븐 프로젝트가 import안되는 이유가 위 식별자들이 동일하기 때문이다. 다르게 고치니 됬다.

 

참고 블로그.

[SPRING]Maven 프로젝트 groupId, artifactId, version 이란? (tistory.com)

 

[SPRING]Maven 프로젝트 groupId, artifactId, version 이란?

회사에서는 회사가 정한 명명 규칙이 있기 때문에 메이븐 프로젝트를 생성할 때 groupId, artifactId, version 부분에 대해 특별히 생각해본 적이 없었습니다. 하지만 개인적으로 spring늘 공부하면서 직

junghn.tistory.com

 

공부시간 1시간. 순공시간 40분.