2016-11-07 48 views
1

我在Eclipse中使用GitHub的依赖关系中的Maven项目,它编译和运行良好。但是,我需要对依赖项进行一些更改,同时仍然保留对其余功能的访问权限。显而易见的解决方案是将其分叉并将新的分支项目替换为旧的依赖项。到目前为止,我已经为自己的帐户付出了代价,但对Maven来说,这是一个新手,我不确定下一步该做什么。如何用项目的Maven依赖项替换GitHub上的项目?

在pom中有两个引用,但是关于进口,还有其他一些我还没有意识到的引用呢?另外,依赖查找程序似乎无法找到新的分支。恐怕我可能会以一种无意的方式改变某些事情,污染项目并为自己设置手动修复错误数小时。

什么是正确的方式来消除旧的依赖关系,并把新的完全放在它的位置?

+0

对不起,我对项目和其他地方的所有问题感到分心,我忘记了他的问题。反馈已更新。 – Sargon1

回答

1
  1. 分叉依赖项后,下载本地副本到您的工作站。

  2. 在该副本中,您可以修改此依赖项的Maven坐标(工件ID或/和版本)。然后进行更改。

  3. perfom mvn clean install。这会将修改后的依赖项放到您的本地Maven存储库(在您的机器上)。

  4. 在项目的pom.xml中引用已更改的依赖项,调整新的坐标。

  5. 为@lexicore写道:

如果使用不同的groupId/artifactId的(这将是清洁的),你 可能还需要排除其他 依赖原有的依赖。检查mvn依赖关系:你为 必须添加排除项的依赖关系树。

  • 现在自己的项目将使用修改后的依赖。
  • +0

    如果你想使用你的fork进行远程构建并且有一个仓库(例如在sonatype或centralRepository中)更新你的groupId并运行'mvn deploy'将它推送到Maven仓库 – perilandmishap

    1

    什么是正确的方式来删除旧的依赖关系,并把新的依赖关系到位?

    无。

    相同的Maven坐标===相同的依赖关系。期。如果您想修改某些内容(如您所做的那样),请使用不同的Maven坐标(groupId/artifactId/version)。如果你想改变一些东西,但仍然使用旧坐标,你会遇到各种各样的问题。如何建立知道他们必须使用哪些依赖关系?

    最简单的方法可能是将版本更改为更高版本,并明确包含分叉依赖项。因此,直接包含的依赖关系会覆盖依赖关系图中的其他版本。

    如果您使用不同的groupId/artifactId(这会更干净),您可能还需要从其他依赖项中排除原始依赖项。检查mvn dependency:tree的依赖性,您必须将exclusions添加到。如果你只是修补一些代码,改变Maven坐标,并建立你的分叉依赖,结果应该有一个正确的pom.xml,所以传递性依赖也应该工作。如果原始代码发生变化,您需要重新设置您的更改。不知道它是否长期可行,您可能想要将您的补丁文件贡献给原始项目,或请求一个功能,即您定制的部分是可定制的OOTB。

    相关问题