module-info.java로 서로 다른 프로젝트의 패키지(클래스) 불러와 사용하기

2021. 8. 19. 17:36java

728x90
반응형

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;    // 외부에 노출하고싶은 패키지
}
Colored by Color Scripter
cs

 

 

 

패키지를 require시 접근하여 사용할수 있다.

 

 

 

1
2
3
4
module data.widget {
    requires common.widget;    // 사용할 패키지
    requires java.sql;
}
Colored by Color Scripter
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);
  }
}
Colored by Color Scripter
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);
  }
}
Colored by Color Scripter
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");
  }
}
Colored by Color Scripter
cs

 

 

 

프로젝트 b의 Component.java파일에서 프로젝트 a의 RenderSupport 클래스를 호출하여 객체를 생성하는 것을 확인할 수 있다.

 

 

module-info.java에 대해 공부하여 서로 다른 프로젝트 간의 exports, require에 대해 알 수 있었다.

 

 

소스코드 첨부 :

 

common.widget.zip

data.widget.zip

728x90
반응형

'java' 카테고리의 다른 글

xwiki offline installation  (0) 2021.08.20
Java ClassLoader 훑어보기  (0) 2021.08.20
hwp -> html 변환  (0) 2021.08.06
How to display PDF, word, xls and PPT in HTML  (0) 2021.08.06
Git을 알게 된 후, Subversion 저장소의 불편함  (0) 2021.08.04