我正在学习Gradle,之前使用过Ant+Ivy和Maven。我正在努力理解使用Gradle发布软件的正确方式。我还需要在不必频繁发布独立工件的情况下持续集成我的项目。
在Ant + Ivy中,可以创建publishSnapshot和publishRelease目标。这两个目标可以使用不同的Ivy解析器来解析并发布到我的不同快照或发布仓库中。
在Maven中,我可以在distributionManagement部分中定义snapshotRepository或repository,以使Maven发布到我的不同快照或发布仓库中。
现在进入Gradle。我该如何实现相同的功能?我正在使用ivy样式的存储库。
感谢下面René的答案,我最终能够创建可行的解决方案。问题的关键在于我需要跨所有项目进行持续集成。为此,我认为使用版本号"latest.integration"声明依赖项是拉取我的库的最新版本的唯一方法,因此我需要使用ivy样式的存储库。实际上,在所有项目中持续集成我的软件的最新版本,还有其他方法可以拉取库。解决方案是像René下面列出的那样使用
在Ant + Ivy中,可以创建publishSnapshot和publishRelease目标。这两个目标可以使用不同的Ivy解析器来解析并发布到我的不同快照或发布仓库中。
在Maven中,我可以在distributionManagement部分中定义snapshotRepository或repository,以使Maven发布到我的不同快照或发布仓库中。
现在进入Gradle。我该如何实现相同的功能?我正在使用ivy样式的存储库。
感谢下面René的答案,我最终能够创建可行的解决方案。问题的关键在于我需要跨所有项目进行持续集成。为此,我认为使用版本号"latest.integration"声明依赖项是拉取我的库的最新版本的唯一方法,因此我需要使用ivy样式的存储库。实际上,在所有项目中持续集成我的软件的最新版本,还有其他方法可以拉取库。解决方案是像René下面列出的那样使用
uploadArchives
(请注意,您需要应用插件:apply plugin: 'maven'
才能实现此功能)。确保您的存储库也是maven样式,并且在声明依赖关系时,您可以像这里所示使用动态版本号。在我的情况下,我在common.gradle中列出了全局版本号,在下游项目中,我使用version:version
来引用全局版本变量。这样,系统中的每个构件都具有相同的版本。当发布时间到来时,我可以将其从1.0-SNAPSHOT更改为1.0,并按顺序构建每个构件。
project.version
是否以“-SNAPSHOT”结尾自动选择snapshotRespository
而不是repository
。这有点像魔法,但现在我很高兴我可以做我想做的事情。 - Sridhar Sarnobat