

상단의 file → project structure

Artifacts → JAR → From modules with dependencies

Main Class에서 선택 → OK 누르고 진행

Apply → OK 누르고 나와서

상단에 있는 Build → Build Artifacts 선택

Action에서 Build 선택

out 폴더 - artifacts → jar 파일 생성된 것 확인할 수 있다.

터미널 창에서 jar 파일이 제대로 실행되는지 확인해보자. 별다른 에러 없이 실행 잘 된다면 성공한 것이다.

• 모두 Gradle 프로젝트로 생성

settings.gradle(루트 프로젝트의 gradle)에 core, study 모듈이 정상적으로 들어간 것을 확인할 수 있다.
package pack1;
public class A{
//메소드 선언
public void method(){
System.out.println("A-method 실행");
}
}
module my_module_a{
exports pack1;
exports pack2;
}
모듈 내용 사용해 코드 짜기
package app;
import pack1.A;
import pack2.B;
import pack3.C;
public class Main {
public static void main(String[] args) {
//my_module_a 패키지에 포함된 A 클래스 이용
A a = new A();
a.method();
//my_module_a 패키지에 포함된 B 클래스 이용
B b = new B();
b.method();
//my_module_b 패키지에 포함된 C 클래스 이용
C c = new C();
c.method();
}
}
구조였던 의존관계를
my_application → my_module_a → my_module_b
구조로 변경한다고 생각해보자.
module my_module_a{
exports pack1;
requires transitive my_module_b; //my_module_b 모듈 의존 설정
}
module my_application{
requires my_module_a;
//requires my_module_b; b에 대한 의존성 해제
}
module my_module{
requires transitive my_module_a
requires transitive my_module_b
}
모듈 전체를 리플렉션 허용
open module 모듈명{
}
지정된 패키지에 대해 리플렉션 허용
module 모듈명{
opens 패키지1;
opens 패키지2;
}
지정된 패키지에 대해 특정 외부 모듈에서만 리플렉션 허용
module 모듈명{
opens 패키지1 to 외부모듈명, 외부모듈명, ...;
opens 패키지2 to 외부모듈명;
}
requires하지 않아도 사용할 수 있지만, 다른 모듈들은 모듈 기술자에 requires를 명시해야함
이것이 자바다(신용권, 임경균 지음)