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에 대해 알 수 있었다.
소스코드 첨부 :
'전체 > Java' 카테고리의 다른 글
모던 자바 인 액션 파트1 - 동작 파라미터화 코드 전달하기 (4) | 2020.07.26 |
---|---|
JSONObject 생성, JSONObject를 JSONArray에 넣기, JSONArray를 ArrayList에 넣기 (0) | 2019.11.05 |
LocalDate, LocalTime, LocalDateTime, DateTimeFormatter 사용하기 (0) | 2019.02.20 |
스트림 특성, 컬렉션과 차이점, 스트림 소스 구현하여 활용하기 (0) | 2019.02.20 |
람다식과 스트림, 함수형 인터페이스(predicate, consumer, supplier, function, operator) 활용하기 (1) | 2019.02.20 |