전체/Java
module-info.java로 서로 다른 프로젝트의 패키지(클래스) 불러와 사용하기
effortDev
2019. 2. 20. 20:15
module-info.java를 통해
서로 다른 프로젝트 a, b에 대해 a에서 선언한 클래스를 b에서 불러와 사용할수 있다.
common.widget프로젝트에는
com.logicbig 패키지에 RendererSupport.java라는 파일이 있고
org.jwidgets 패키지에 SimpleRenderer.java라는 파일이 있다.
common.widget 프로젝트(a)의 module-info.java에 외부에 노출하고 싶은 패키지를 exports해주고
1 2 3 | module common.widget { exports com.logicbig; // 외부에 노출하고싶은 패키지 } | cs |
패키지를 require시 접근하여 사용할수 있다.
1 2 3 4 | module data.widget { requires common.widget; // 사용할 패키지 requires java.sql; } | cs |
requires로 선언후 Java Build Path로 Module path를 잡아주면된다.
이후 프로젝트(b)에서 다른 프로젝트(a)에 있는 클래스를 호출하여 객체를 생성하거나 메소드를 활용할 수 있다.
프로젝트 a의 RendererSupport.java
1 2 3 4 5 6 7 8 9 | package com.logicbig; import org.jwidgets.SimpleRenderer; public class RendererSupport { public void render(Object object) { new SimpleRenderer().renderAsString(object); } } | cs |
프로젝트 a의 SimpleRenderer.java
1 2 3 4 5 6 7 | package org.jwidgets; public class SimpleRenderer { public void renderAsString(Object object) { System.out.println(object); } } | cs |
프로젝트 b의 Component.java
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.example; import com.logicbig.RendererSupport; import java.sql.*; // java.base 그 외 다른 모듈 패키지를 쓰려면 module-info에 require로 넣어줘야함. public class Component { public static void main(String[] args) { RendererSupport support = new RendererSupport(); support.render("Test Object"); } } | cs |
프로젝트 b의 Component.java파일에서 프로젝트 a의 RenderSupport 클래스를 호출하여 객체를 생성하는 것을 확인할 수 있다.
module-info.java에 대해 공부하여 서로 다른 프로젝트 간의 exports, require에 대해 알 수 있었다.
소스코드 첨부 :