Gradle ] Gradle Maven Local Repository 사용하기

yoogle·2020년 4월 23일
0

Goal

최근 Gradle 기반의 Spring을 공부하는 도중에 Maven의 Local repository를 사용하는 경우가 생겼다.

내가 만든 라이브러리를 Maven Local repository에 저장하고 Spring 프로젝트에서 해당 라이브러리를 실행할 계획이다.

라이브러리 만들기

간단한 YoogleMan 클래스를 만들어 Maven Local repository에 저장하고 Spring 프로젝트에서 사용할 것이다.

먼저 Gradle 프로젝트를 생성한다.

프로젝트 정보

  • Group ID : me.yoogle
  • Artifact : YoogleManLib
  • Version : 1.0-SNAPSHOT(default)

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 클래스를 사용하여 결과까지 정상적으로 출력하는 것을 확인할 수 있다.

References

profile
함께 문제를 고민하고 해결해 나가는 것을 좋아합니다. : )

0개의 댓글