Java 使用Maven更改类实现

Java 使用Maven更改类实现,java,maven,Java,Maven,我需要在一个完成的Maven模块类中替换几个方法的实现。不幸的是,我不能直接在源代码上更改实现,所以我需要找到一个解决方案 我的第一个想法是包含这个源Maven模块作为新模块的依赖项,排除这个类,并使用我的实现创建一个具有相同包和类名的新模块。这是解决这个问题的正确方法还是其他方法?您可以尝试将原始maven模块作为依赖项,然后扩展“有问题”的类并部署maven模块。这将允许用户访问新的实现,同时确保新的扩展类仍然可以使用原始代码。这是一个更干净的解决方案,但有一个缺点是原始类仍然是公开的 比如

我需要在一个完成的Maven模块类中替换几个方法的实现。不幸的是,我不能直接在源代码上更改实现,所以我需要找到一个解决方案


我的第一个想法是包含这个源Maven模块作为新模块的依赖项,排除这个类,并使用我的实现创建一个具有相同包和类名的新模块。这是解决这个问题的正确方法还是其他方法?

您可以尝试将原始maven模块作为依赖项,然后扩展“有问题”的类并部署maven模块。这将允许用户访问新的实现,同时确保新的扩展类仍然可以使用原始代码。这是一个更干净的解决方案,但有一个缺点是原始类仍然是公开的

比如说。如果原始类为:

public class A{}
让你的班级:

public class B extends A{}

然后确保您的用户使用
B
而不是A.

这是一种解决方案,但不推荐使用。为什么你不能直接改变来源?这是一个第三方库吗?这是一个非常丑陋的解决办法。我们正在实现客户的请求,但我们不能改变应用程序的核心。这个类是在你使用Spring的时候,你可以考虑Spring方法注入,谢谢你的回答。不幸的是,我没有在这个项目中使用spring。我已经使用maven shade插件更改了类的实现谢谢你们的回答,但那个是行不通的。其他模块仍将使用A.class:some_method()。它们不会自动更改为使用B.class:some_method()。(正如我所说,我不能更改其他模块的来源-我只能更改dependencie的)