여러 Maven 모듈로 구성된 라이브러리 용 확장 프로그램을 작성 중입니다. 한 모듈 위에 몇 가지 기능을 추가해야하지만 누군가 내 확장 (일반적인 사용 사례)없이이 모듈을 사용하려는 경우 불필요한 종속성을 추가하고 싶지 않습니다.다른 모듈에 런타임 종속성을 추가하는 방법은 무엇입니까?
내가 생각할 수있는 한 가지 해결책은 내 확장을 사용하여 다른 모듈을 만들고 리플렉션을 사용하여 해당 클래스에서 메소드를 호출하는 것입니다. 다음과 같은 수표가 있습니다.
try {
Class.forName("my.package.Foo", false, getClass().getClassLoader());
// extension will be enabled and some method will be called using reflection
} catch(ClassNotFoundException e) {
// extension will be disabled
}
클래스 패스에있는 메소드는 클래스 패스에있는 경우에만 호출됩니다. 확장 모듈은 Maven 의존성을 모듈에 추가하면 (확장 모듈에 대한 의존성 외에도) 활성화 될 수 있습니다.
그러나 이것은 최상의 접근 방식처럼 들리지 않습니다. 이 문제에 대한 더 우아한 해결책이 있습니까?