使用Maven创建可插拔项目

时间:2011-01-03 22:08:31

标签: java spring maven-2 maven

我目前正在开发一个maven java web应用程序项目,我需要扩展它以添加额外的功能但不更改原始代码库。因此,Web应用程序应将新请求转发给另一个将处理它们的jar。问题是我们需要jar可以插件,以便我们可以替换它或添加更多jar作为项目的更多插件,而无需更改原始代码库,包括不更改每个新jar的maven pom.xml文件(插件)所以我不能硬编码pom文件中对这个jar的依赖

在打包我的项目时,有没有办法设置maven配置文件,以指示maven要接收哪些插件?

2 个答案:

答案 0 :(得分:1)

您是否希望能够在运行时(不仅仅是在构建时)插入jar?我建议您单独构建Web应用程序的系统。然后,您将插件jar作为单独的项目构建。在运行时,在文件系统上定义了一个文件夹,您将在其中查找插件jar,然后构造UrlClassLoader实例以访问这些jar中的类。

答案 1 :(得分:0)

Srry回答这么晚,但我们也有类似的要求,所以我们做的是创建了四个maven项目

  1. 你的主要项目就是你想要的可插拔性质。

  2. 第二个是接口,它将声明一组接口类,可插件插件需要实现以在主项目中调用。

  3. 第三个是POM构建项目,它将作为pom.xml中模块的所有自定义插件的父项目,类似于spring boot starter项目依赖项。任何需要创建的新插件都将此POM项目作为父项目。该项目基本上是CICD的帮助项目,以便我们的自定义插件jar可以构建并推送到我们的自定义存储库
  4. 这将是一个参考项目,其中包含所有自定义插件作为其pom.xml中的依赖项,此项目信息将位于主项目中,以便在主项目构建时所有自定义插件成为主项目的类路径< / LI>

    您的主要父插件项目将在其pom.xml中将第二个接口插件引用作为依赖项,以便自定义插件可以实现接口。它还将具有第四个项目的引用,以便所有自定义插件都是在我们主要项目的类路径中。

    现在,当您构建父POM项目时,所有自定义插件都将构建为jar并存储在ur .M2文件夹中。

    现在要在主项目中访问这些自定义插件,您需要在pon.xml中将接口引用依赖项作为依赖项,现在构建将是

    1. 要安装界面项目
    2. 安装父pom项目
    3. 安装第四个项目
    4. 安装主项目
    5. 构建第四个项目后,您将在主项目的类路径中拥有所有自定义插件。然后,您可以使用服务加载器类或netbeans查找方法来加载实现接口项目中定义的接口的所有类。