[java] Jigsaw 모듈과 빌드 도구의 통합 (gradle, maven 등)

Java 9부터 도입된 Jigsaw 모듈 시스템은 자바 애플리케이션을 더욱 모듈화하고 격리된 환경에서 실행할 수 있게 해주는 기능입니다. Jigsaw 모듈 시스템을 사용하여 애플리케이션을 개발할 때, 빌드 도구를 통해 모듈을 관리하는 것이 바람직합니다. 이 글에서는 gradle과 maven과 같은 인기 있는 빌드 도구와 Jigsaw 모듈 시스템의 통합 방법에 대해 알아보겠습니다.

Gradle과 Jigsaw 모듈 시스템

Gradle은 자바 애플리케이션을 빌드하고 관리하기 위한 강력한 빌드 도구입니다. Gradle 4.6부터는 Jigsaw 모듈 시스템을 완벽하게 지원하고 있습니다. Gradle에서 Jigsaw 모듈을 관리하기 위해서는 build.gradle 파일에 몇 가지 설정을 추가해야 합니다.

plugins {
    id 'java'
    id 'application'
    id 'idea' // 다른 IDE를 사용할 경우 해당 IDE 플러그인을 추가해야 함
}

java {
    modularity.enforceStrictSigning = true // 모듈 내부 package의 접근을 제한
    targetCompatibility = '9'
    sourceCompatibility = '9'
}

// 모듈 정의
jar {
    manifest {
        attributes 'Main-Class': 'com.example.Main'
    }
    // Jigsaw 모듈 설정 파일 추가
    from('src/main/java/module-info.java')
}

// 의존성 관리
dependencies {
    implementation 'org.example:example-module:1.0.0'
    testImplementation 'junit:junit:5.0.0'
}

위의 예제에서 modularity.enforceStrictSigning 설정은 모듈 내부 package에 대한 접근을 제한하여 모듈 간의 격리를 유지합니다. java 블록에서는 사용할 자바 버전을 지정하고, jar 블록에서는 모듈 설정 파일 module-info.java를 추가합니다. dependencies 블록에서는 모듈이 의존하는 다른 모듈을 선언할 수 있습니다.

Gradle을 사용하여 모듈을 빌드하고 실행하려면 다음 명령어를 사용합니다.

gradle build
gradle run

Maven과 Jigsaw 모듈 시스템

Maven은 또 다른 인기 있는 자바 빌드 도구입니다. Maven에서도 Jigsaw 모듈을 관리하기 위한 설정을 추가할 수 있습니다.

```xml

... 9 9 org.apache.maven.plugins maven-compiler-plugin 3.8.1 src/main/java