我正在学习maven (以及java打包和发行),我正在进行一个新的oss项目的实践。这里是我的情况,当然都是java:
我的主要项目是基于ProjectA的github存储库中的maven。我还在github中创建了一个基于maven的实用程序项目: ProjectB。ProjectA依赖于我修改过的一个项目,该项目最初来自一个基于google代码的蚂蚁存储库ProjectC。
因此,如何设置ProjectA的构建,以便有人可以下载ProjectA.jar并使用它,而不需要为ProjectB和ProjectC安装jars,以及如何设置构建,以便有人可以签出ProjectA并只运行'mvn包‘以进行完整编译?
(此外,我应该如何处理修改后的ProjectC版本?将类文件直接包含到ProjectA中,还是将项目分解为可以作为maven依赖项使用的东西?)
我一直在阅读诸如这个问题和这个问题之类的链接,但我不清楚这些链接与我的特定环境有何关系。因此,任何帮助都将不胜感激。谢谢!
发布于 2010-05-31 10:52:38
因此,我如何设置ProjectA的构建,以便有人可以下载ProjectA.jar并使用它,而不需要为ProjectB和ProjectC安装jars。
假设ProjectA是JAR,您可以创建一个可执行的JAR,该JAR可以将依赖绑定到Maven组装插件 (和预定义的jar-with-dependencies
描述符)或Maven Shade插件。
我如何设置构建,使某人可以签出ProjectA,并只运行'mvn包‘的完整编译?
您必须将依赖关系deploy
到可以通过HTTP读取的存储库,并在pom.xml中声明该存储库。AFAIK,git-集线器不提供任何设施。但是任何带有FTP访问(或者更好的,scp)的网络托管服务都应该做到这一点。如果您的项目是开源的,另一种选择是使用Sonatype的开放源码软件储存库托管服务。
以防万一,你可能想读这篇博客文章,但你不会学到更多的东西。
最简单的方法仍然是将这3个项目组织为一个多模块的maven项目,并构建所有模块。
此外,我应该如何处理修改后的ProjectC版本?
从模块化的角度来看(假设您找到了关于存储库的上述部分的解决方案),将其作为一个单独的模块当然是有意义的,特别是如果有机会在项目之外使用ProjectC。
发布于 2010-05-31 10:48:07
您必须从附加的依赖项中发布代码。有两种选择:
https://stackoverflow.com/questions/2945148
复制