0. diagram-library 시작하기

모깅·2025년 7월 23일
post-thumbnail

시작하기에 앞서...

학교 수업 중 객체지향 관련 과목을 수강하던 도중 교수님께서 물 흐르듯 다이어그램을 만들어주는 프로그램을 만드는 것을 제안해주셨다.

교수님께서는 현재 현업에서 코드를 바꿔도 문서를 업데이트 하지 않는 경우가 대다수라고 하셨다. 내가 현업에 있다고 하더라도 코드 작성하는데 힘을 쏟고 나면 문서 최신화는 뒷전으로 충분히 미룰 수 있을 것이라고 생각했다. 따라서 다이어그램이라도 자동화 시킬 수 있는 라이브러리를 개발해보는 것이 어떨까 생각하여 이 프로젝트를 시작하게 되었다.
또한 런타임에 데이터를 조작하는 일이 생기기 때문에 바이트 코드에 대한 공부도 같이 할 수 있지 않을까 조심스럽게 예측해본다.

더 빨리 집가고 싶은 개발자는 자동화를 시키는 것이 덕목이 아닌가 생각해본다. ㅎㅎ

라이브러리 배포 방법

라이브러리 개발에 앞서 배포 방법에 대해 알아보자.

방식설명사용 예시공개 여부
① GitHub + JitPackGitHub에 올리고 URL만 있으면 의존성으로 사용간편한 오픈소스 배포공개
② Maven Central가장 공식적인 자바 라이브러리 저장소오픈소스 배포, 표준화된 배포 필요 시공개
③ 사내 Nexus / Artifactory기업 내에서만 사용하는 저장소내부 라이브러리 관리, CI/CD 연동비공개
④ 로컬 JAR 배포직접 .jar 파일을 프로젝트에 넣어서 사용빠른 테스트, 사내 스크립트 배포비공개
⑤ Gradle Plugin PortalGradle 전용 플러그인 등록 사이트Gradle 명령 기반 도구 배포공개

나는 오픈소스로 배포할 것이기 때문에 1, 2번을 사용할 것이다.
일단은 빠르게 배포할 수 있는 1번 방법을 사용할 것이고 시간이 생긴다면 2번 Maven Central로 옮길 것이다.

① GitHub + JitPack 사용하기

tag 적용하기

먼저, 깃에 프로젝트를 올린다. 이때 중요한 점은 tag도 같이 붙여줘야 한다는 점이다. 명령어는 다음과 같다.

git tag [v1.0.0] # 태그 생성 (현재 커밋 기준)
git push origin [v1.0.0] # 태그를 원격에 푸시

Gradle 빌드 설정 (build.gradle.kts)

본인이 선택한 설정에 알맞게 추가해주면 된다.

plugins {
    id("java")
    `java-library` // 추가!!!!
}

group = "com.github.yousunmok" // 변경!!!
version = "1.0.1" // 버전에 알맞게 변경(달라도 문제는 없어 보임)

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(platform("org.junit:junit-bom:5.9.1"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

tasks.test {
    useJUnitPlatform()
}

폴더 구조

본인 마음대로 하면 되지만 java 폴더 아래에 폴더 생성한 후 클래스 생성해야한다. (다른 프로젝트에서 라이브러리 빌드시 java 폴더 아래 데이터들이 유지된다.
-> 이 경우 diagramlib를 포함하여 아래 데이터들이 빌드된다.)

테스트 클래스는 다음과 같이 간단히 구현하였다.

package diagramlib.util;

public class libTest {
    public static void print() {
        System.out.println(1111111);
    }
}

JitPack

https://jitpack.io/#yousunmok/diagram-lib

위 상태에서 원격에 푸시하게 되면 JitPack에 올라가게 된다.

가장 최근 버전인 v1.0.1에 들어가 아래로 내려가면 다음과 같은 내용이 보이게 된다. 새로운 프로젝트에서 빌드 타입에 맞게 다음 내용들을 추가해주면 된다!

프로젝트 적용

1. gradle 적용

다음과 같이 프로젝트를 만들어 진행해보았다.

plugins {
    id("java")
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
    maven("https://jitpack.io") // 추가!!
}

dependencies {
    testImplementation(platform("org.junit:junit-bom:5.9.1"))
    testImplementation("org.junit.jupiter:junit-jupiter")

    implementation("com.github.yousunmok:diagram-lib:v1.0.1") // 추가!!
}

tasks.test {
    useJUnitPlatform()
}

이 상태로 빌드하게 되면 다음과 같이 파일이 생기게 된다.

이와 같이 사용할 수 있게 된다!!

2. Maven 적용하기

호환성을 보기 위해 이번엔 Maven과 자바 21로 프로젝트를 생성하였다.

JitPack을 참고하여 다음과 같이 작성하였다.

<?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>org.example</groupId>
    <artifactId>test11</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

// ---------------------추가-------------------------

    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.github.yousunmok</groupId>
            <artifactId>diagram-lib</artifactId>
            <version>v1.0.1</version> 
        </dependency>
    </dependencies>
    
// --------------------------------------------------

</project>

이 역시 빌드하게 되면 다음과 같이 파일이 생성되는 것을 볼 수 있다.

여러가지 버전 모두 해봐야겠지만 일단은 라이브러리 프로젝트가 자바 8 버전이기 때문에 상위 버전에서도 호환이 잘 될 것으로 보인다!

profile
멈추지 않기

0개의 댓글