Java 使用Maven创建可插入项目

Java 使用Maven创建可插入项目,java,spring,maven-2,maven,Java,Spring,Maven 2,Maven,我目前正在从事一个maven java web应用程序项目,需要对该项目进行扩展以添加额外的功能,但不改变原始代码库。因此,web应用程序应该将新请求转发给另一个jar来处理它们。问题是我们需要jar是可插入的,这样我们就可以替换它或将更多jar作为更多插件添加到项目中,而无需更改原始代码库,包括不更改每个新jar(插件)的maven pom.xml文件,因此我无法在pom文件中硬编码对该jar的依赖关系 那么,在打包我的项目时,是否有一种方法可以设置maven概要文件,以指示maven选择哪些

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


那么,在打包我的项目时,是否有一种方法可以设置maven概要文件,以指示maven选择哪些插件?

您不希望在运行时(而不仅仅是在构建时)插入JAR吗?我建议您使用一种系统,单独构建web应用程序。然后将插件JAR构建为单独的项目。在运行时,在文件系统上定义一个文件夹,在其中查找插件JAR,然后构造UrlClassLoader实例来访问这些JAR中的类

感谢您这么晚才回答,但我们也有类似的要求,所以我们创建了四个maven项目

  • 一个是你的主要项目,你想要的是可插拔的性质

  • 第二个是接口,它将声明一组接口类,可插拔插件需要实现这些接口类才能在主项目中被调用

  • 第三个是POM构建项目,它将作为POM.xml中所有自定义插件模块的父项目,类似于spring boot starter项目依赖项。任何需要创建的新插件都将此POM项目作为父项目。此项目基本上是CICD的帮助项目,因此我们的自定义插件jar将被构建并推送到我们的自定义存储库中
  • 这将是一个参考项目,包含所有自定义插件作为其pom.xml中的依赖项,并且该项目信息将位于主项目中,以便在主项目构建时,所有自定义插件成为主项目的类路径
  • 您的主父插件项目将有第二个接口插件引用作为其pom.xml中的依赖项,以便自定义插件实现该接口。它还将有第四个项目的引用,以便所有自定义插件都位于主项目的类路径中

    现在,当您构建父POM项目时,所有定制插件都将以jar的形式构建并存储在ur.M2文件夹中

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

  • 要安装mvn接口项目
  • 要安装mvn,请安装父pom项目
  • 要安装mvn,请安装第四个项目
  • 要安装主项目,请执行mvn
  • 一旦第四个项目构建完成,您将在主项目的类路径中拥有所有自定义插件。然后,您可以使用服务加载器类或netbeans查找方法来加载实现接口项目中定义的接口的所有类