假设我有一个依赖于某个库的开源项目,必须修补它才能修复一些问题。我怎么做?我的想法是:
一个不错的解决方案是使用修补的库源创建一个独特的项目,并使用-patched限定符将其部署在本地/企业存储库中。但这不适合开源项目,任何检查其来源的人都可以轻松构建。或者我应该只说“并且,在构建我的项目之前,请检查那些东西并运行mvn install”。
答案 0 :(得分:6)
一个不错的解决方案是使用修补的库源创建一个独特的项目,并使用-patched限定符将其部署在本地/企业存储库中。但这不适合开源项目,任何检查其来源的人都可以轻松构建。或者我应该只说“并且,在构建我的项目之前,请检查那些东西并运行mvn install”。
这是我为公司和开源项目做的事情(实际上我做的事情)。获取源代码,将它们置于不同项目的版本控制之下,对它们进行修补,重新构建修补的库(并在版本中包含此信息,如XYZ-patched),将其部署到存储库(您可以使用SVN, Google代码 1 ),在您的POM中声明存储库并更新依赖关系以指向修补版本。
使用这种方法,您可以对您的用户说:查看我的代码并运行mvn install
,他们只会获得修补版本而无需任何额外操作。这是恕我直言最干净的方式(不容易出错,没有类路径命令混乱,没有增加构建时间等)。
1 很多人正在将他们的代码部署到他们托管的subversion存储库(this post中的方法)。
答案 1 :(得分:3)
一个不错的解决方案是使用修补的库源创建一个独特的项目,并使用-patched限定符将其部署在本地/企业存储库中。但这不适合开源项目,任何检查其来源的人都可以轻松构建。或者我应该只说“并且,在构建我的项目之前,请检查那些东西并运行mvn install”。
我同意这一点和Pascal的回答。一些补充说明:
dependency:unpack
,然后将其与编译后的类组合使用pom.xml
都需要正确表示该库的依赖关系