我目前正在开发一个maven java web应用程序项目,我需要扩展它以添加额外的功能但不更改原始代码库。因此,Web应用程序应将新请求转发给另一个将处理它们的jar。问题是我们需要jar可以插件,以便我们可以替换它或添加更多jar作为项目的更多插件,而无需更改原始代码库,包括不更改每个新jar的maven pom.xml文件(插件)所以我不能硬编码pom文件中对这个jar的依赖
在打包我的项目时,有没有办法设置maven配置文件,以指示maven要接收哪些插件?
答案 0 :(得分:1)
您是否希望能够在运行时(不仅仅是在构建时)插入jar?我建议您单独构建Web应用程序的系统。然后,您将插件jar作为单独的项目构建。在运行时,在文件系统上定义了一个文件夹,您将在其中查找插件jar,然后构造UrlClassLoader实例以访问这些jar中的类。
答案 1 :(得分:0)
Srry回答这么晚,但我们也有类似的要求,所以我们做的是创建了四个maven项目
你的主要项目就是你想要的可插拔性质。
第二个是接口,它将声明一组接口类,可插件插件需要实现以在主项目中调用。
您的主要父插件项目将在其pom.xml中将第二个接口插件引用作为依赖项,以便自定义插件可以实现接口。它还将具有第四个项目的引用,以便所有自定义插件都是在我们主要项目的类路径中。
现在,当您构建父POM项目时,所有自定义插件都将构建为jar并存储在ur .M2文件夹中。
现在要在主项目中访问这些自定义插件,您需要在pon.xml中将接口引用依赖项作为依赖项,现在构建将是
构建第四个项目后,您将在主项目的类路径中拥有所有自定义插件。然后,您可以使用服务加载器类或netbeans查找方法来加载实现接口项目中定义的接口的所有类。