假设,我有一个依赖于某个库的开源项目,必须对其进行修补才能解决一些问题。我怎么做?我的想法是:
一个不错的解决方案是使用已修补的库源创建一个独特的项目,并使用 -patched 限定符将其部署在本地/企业存储库上。但这不适合任何查看其源代码的人都可以轻松构建的开源项目。或者我应该说“而且,在你构建我的项目之前,请检查那些东西并运行 mvn install”。
最佳答案
One nice solution is to create a distinct project with patched library sources, and deploy it on local/enterprise repository with -patched qualifier. But that would not fit for an opensourced project that is meant to be easily buildable by anyone who checks out its sources. Or should I just say "and also, before you build my project, please check out that stuff and run mvn install".
这就是我将为公司和开源项目所做的(实际上也是我所做的)。获取源代码,将它们置于不同项目中的版本控制下,修补它们,重建修补的库(并将此信息包含在版本中,例如 X.Y.Z-patched),将其部署到存储库(您可以为此使用 SVN, a la Google Code1),在您的 POM 中声明存储库并更新依赖项以指向您的修补版本。
使用这种方法,您可以对您的用户说:查看我的代码并运行
mvn install
他们只会获得修补版本而无需任何额外操作。这是恕我直言,最干净的方式(不容易出错,没有类路径顺序困惑,没有增加构建时间等)。1 很多人正在将他们的代码部署到他们托管的 Subversion 存储库(this post 中的操作方法)。
关于maven-2 - 具有修补依赖项的 Maven 项目的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619225/