我在Eclipse中使用来自GitHub的依赖项的Maven项目,它编译并运行正常。但是,我需要对依赖项进行一些更改,同时仍保留对其余功能的访问权限。显而易见的解决方案是将它分叉并将新的分叉项目替换为旧的依赖项。我把它分到我自己的帐户上,但是对Maven不熟悉,我不确定下一步该做什么。
在pom中有两个引用它,但是对于import,还有其他一些我还不知道的引用呢?另外,依赖查找器似乎无法找到新的fork。我担心我可能会以一种意想不到的方式改变某些事情,弄乱项目并自行设置以便手动修复错误数小时。
删除旧依赖项并将新依赖项完全放在原位的正确方法是什么?
答案 0 :(得分:1)
分叉依赖项后,将本地副本下载到工作站。
在该副本中,您可以修改此依赖项的Maven坐标(工件ID或/和版本)。然后进行更改。
perfom mvn clean install
。这会将修改后的依赖项放到您的本地Maven存储库中(在您的计算机上)。
在项目的引用已更改依赖项的pom.xml中,调整新坐标。
正如@lexicore所写:
如果您使用不同的groupId / artifactId(那将更干净) 可能还需要从其他人中排除原始依赖关系 依赖。检查mvn依赖关系:树的依赖关系 必须添加排除项。
答案 1 :(得分:1)
删除旧依赖项并将新依赖项完全放在原位的正确方法是什么?
无。
相同的Maven坐标===相同的依赖关系。期。如果您想要修改某些内容(就像您一样),请使用不同的Maven坐标(groupId
/ artifactId
/ version
)。如果你想改变一些但仍然使用旧坐标,你会遇到各种各样的问题。那里的构建将如何知道它们必须使用哪些依赖项?
最简单的方法可能是将版本更改为更高版本并明确包含分叉依赖项。因此,直接包含的依赖将覆盖依赖图中的其他版本。
如果您使用不同的groupId
/ artifactId
(更干净),您可能还需要从其他依赖项中排除原始依赖项。检查mvn dependency:tree
是否有必须添加exclusions
的依赖项。
另外,如果你只是修改一些代码,更改Maven坐标,并构建你的分叉依赖,结果应该有一个正确的pom.xml
,所以传递依赖也应该工作。如果原始代码发生了变化,您需要在此基础上进行变更。不确定它是否可以长期使用,您可能希望将补丁提供给原始项目,或者请求一个功能,即您自定义的部分是可自定义的OOTB。