최근 Gradle 기반의 Spring을 공부하는 도중에 Maven의 Local repository를 사용하는 경우가 생겼다.
내가 만든 라이브러리를 Maven Local repository에 저장하고 Spring 프로젝트에서 해당 라이브러리를 실행할 계획이다.
간단한 YoogleMan 클래스를 만들어 Maven Local repository에 저장하고 Spring 프로젝트에서 사용할 것이다.
먼저 Gradle 프로젝트를 생성한다.
YoogleMan.java
package me.yoogle;
public class YoogleMan {
String name;
int howLong;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHowLong() {
return howLong;
}
public void setHowLong(int howLong) {
this.howLong = howLong;
}
@Override
public String toString() {
return "YoogleMan{" +
"name='" + name + '\'' +
", howLong=" + howLong +
'}';
}
}
build.gradle
plugins {
id 'java'
id 'maven-publish' // maven-publish 플러그인 추가
}
...
publishing {
publications {
// 해당 정보를 입력하여 타 프로젝트에서 해당 라이브러리를 참조한다.
maven(MavenPublication) {
groupId = 'me.yoogle' // groupId 추가
artifactId = 'YoogleManLib' // artifactId 추가
version = '1.0' // 버전 정보 추가
from components.java
}
}
}
...
다음 명령어를 실행하여 Maven Local repository에 jar 형태로 저장한다.
$ gradle publishToMavenLocal
해당 명령어를 입력하면 다음과 같이 jar형태로 생성된다.
새로운 Gradle 기반 Spring Boot 프로젝트를 생성하여 dependency를 추가한다.
groupId:artifactId:version
형식으로 참조할 수 있다.
build.gradle
...
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'me.yoogle:YoogleManLib:1.0' // groupId:artifactId:version
testCompile group: 'junit', name: 'junit', version: '4.12'
}
YoogleManRunner.java
@Component
public class YoogleManRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
YoogleMan yoogleMan = new YoogleMan();
yoogleMan.setName("yoogle");
yoogleMan.setHowLong(15);
System.out.println(yoogleMan.toString());
}
}
결과적으로 Maven Local repository의 YoogleManLib 라이브러리의 의존성을 추가하여 YoogleMan 클래스를 사용하여 결과까지 정상적으로 출력하는 것을 확인할 수 있다.