在以下senario中
我正在包装外部 jar文件(读取我无法控制的依赖项)并将其包装在服务中以通过RMI公开。
我希望我的服务接口也可以作为maven依赖项导出,但是因为它将返回依赖项中定义的类,这意味着依赖项本身将被用作我的依赖项服务接口。
不幸的是,原始jar文件包含许多与我公开的服务无关的类。
是否可以依赖maven中该jar文件中的几个类(可能通过提取和重新打包几个相关的类)?
服务项目包括所有uberbig jar。但是暴露了一个服务BeanService,它有一个调用,返回com.uberbig.beans.IntrestingLightWeightSerialiasbleBean的内容。
服务接口项目需要具有类似于
的bean定义interface BeanFetcher {
public IntrestingLightWeightSerialiasbleBean fetchBeanById(long beanId);
}
理想情况下,我的serviceInterface jar文件只包含BeanFetcher接口。 IntrestingLightWeightSerialiasbleBean的定义以及IntrestingLightWeightSerialiasbleBean的任何直接依赖。
该项目是内部使用的,不会公开暴露,因此只要重新打包的bean定义是二进制的并且与外部jar文件一致,就不会出现重新打包问题。
任何建议?
可能相关的问题Maven depend on project - no jar but classes
也许我可以使用依赖项中的某些内容:maven-dependency-plugin的复制部分,但我还没弄清楚如何做到这一点。
答案 0 :(得分:1)
创建您自己的重新包装的jar并将其放入您当地的仓库中。并希望你实际上已经确定了所有的依赖关系,考虑了反思等等.IMO并不值得。
您可以使用ProGuard /等自动执行此操作(相关的风险增加)。拉出未使用的类等。这也可以在你自己的工件上完成,例如,通过jarjar / onejar / etc创建一个多功能的jar。
答案 1 :(得分:1)
我认为你有正确的插件,但不是目标。您应该使用dependency:unpack代替。
您应该能够使用包含过滤器来仅提取您需要的类,然后将它们重新打包到您自己的jar中。 (服务接口jar,如果你在服务接口项目中执行它,但你也可以设置一个单独的项目。)