如何使用旧的 maven 插件在 gradle 中的本地和远程 repo 之间切换?

Posted

技术标签:

【中文标题】如何使用旧的 maven 插件在 gradle 中的本地和远程 repo 之间切换?【英文标题】:how to flip between local and remote repo in gradle with old maven plugin? 【发布时间】:2016-07-13 22:38:23 【问题描述】:

我没有使用新的 maven-publish 插件,它看起来很棒并且非常适合这个用例,因为我一直在阅读没有人可以让 jar 的签名工作(尽管我愿意接受解释的答案以及我还没有找到一个博客说它现在可以工作)。

太好了,我想轻松地在本地发布和远程发布之间切换。我当前的 build.gradle 文件是

https://github.com/deanhiller/webpieces/blob/master/build.gradle

其中有一个已注释掉的本地存储库,我一直在打开和关闭评论,并希望避免这种情况。 IE。这些回购...

       //repository(url: "file://localhost/tmp/myRepo/")
        repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") 
          authentication(userName: sonatypeUsername, password: sonatypePassword)
        

我在这里读到了一篇关于做某事的帖子,但由于神秘的关闭错误而失败了......

Configuring multiple upload repositories in Gradle build

我把它放在我的子项目部分,但这根本不起作用。理想情况下,使用图表 whenReady 听起来最好,因为如果我正在执行发布目标,那么仅使用远程 repo 会很酷。不过,我似乎无法让这些工作。

谢谢, 院长

【问题讨论】:

【参考方案1】:

编辑:我错了,当我 ./gradlew jar 时,下面的工作现在只有一半,然后我得到这个错误......(所以一些目标工作而其他目标不......哎哟)

Cannot cast object 'task ':uploadArchives'' with class 'org.gradle.api.DefaultTask_Decorated' to class 'org.gradle.api.tasks.Upload'

我确实想出了一个解决方法,虽然它看起来很奇怪,因为现在隐藏了正在运行的任务列表中的目标,这取决于是否设置了一个看起来有点奇怪的变量。我认为可能有更好的方法来做到这一点,所以仍然列出所有任务,但现在我的构建文件只需执行一个

if(project.hasProperty('projVersion')) 
  //task I want to be able to run
 else 
  //other task I want to run when no projVersion

所以它可以工作......这些任务现在只是不可见,直到我执行 ./gradlew -PprojVersion=X 来查看它们。

【讨论】:

以上是关于如何使用旧的 maven 插件在 gradle 中的本地和远程 repo 之间切换?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义 gradle 插件而不将其发布到 maven/ivy 存储库?

用于 Maven 发布等功能的 Gradle 发布插件

如何使用shadowJar gradle插件而不是maven发布将胖JAR发布到JitPack

如何把springboot插件删除干净

为啥 Gradle 不使用插件 pom.xml 中声明的 Maven 存储库?

gradle-release 插件 + maven 发布插件