如何将 grails 3 插件发布到我的本地 nexus 存储库?

How do I publish a grails 3 plugin to my local nexus repo?

运行 grails publish-plugin 似乎什么也没做,我能找到的唯一文档是关于发布到 bintray 的。

[编辑:]

我可以通过 gradle publish 发布该插件,但想知道是否有 grails-y 方法可以做到这一点,并且想知道 grails publish-plugin 实际上做了什么:/

在 grails 中 2.x BuildConfig.groovy

grails.project.dependency.distribution = {
    remoteRepository(id: '<repo name>',    url: '<url to your nexus repo>')
}

Then:

grails clean

grails compile 

grails maven-deploy --repository=repo name

在 grails 中 3.x+:

buildscript {
    repositories {
        mavenLocal()
        ...
    }
    dependencies {
        classpath "org.grails:grails-gradle-plugin:$grailsVersion"
    }
}
publishing {
    repositories {
        maven {
            credentials {
                username "xyz"
                password "xyz"
            }
            url "http://example.com/nexus/content/repositories/nfb"
        }
    }
}

最后

gradle 发布

在 Grails 3.0.11 中,我使用 gradle 目标 publishToMavenLocal 进行本地开发。还有另一个目标 publishMavenPublicationToMavenRepository。这似乎来自 gradle 插件:

apply plugin: 'maven-publish'

似乎在标准插件中 build.gradle。

(编辑:添加关于使用本地 maven 的注释)。

在 re-reading 你的问题和下面的评论之后,我认为这不是你要找的。听起来您想正常发布到系统上的存储库。 publishMavenPublicationToMavenRepository 可以处理。我上面描述的是使用本地 Maven 缓存来保存插件的快照,您可以在您的机器上的应用程序中使用它。

在开发我的应用程序中使用的插件时,这对我有用。

我没有创建本地存储库。上面的gradle插件(maven-publish)有一个任务publishToMavenLocal会把Grails插件发布到本地maven缓存中进行本地开发

它将插件的 .zip 文件存储在 .m2 缓存目录中:

C:\Users\xyz\.m2\repository\org\whatever\plugins\pluginName[=11=].3-SNAPSHOT

然后,您可以在计算机上的 Grails 应用程序中使用该插件。

我在 Ryan Vanderwerf at http://rvanderwerf.blogspot.com/2015/07/how-to-publish-grails-3-plugin.html 的帮助下弄明白了,他写道有一堆 spring-boot 依赖项没有版本,这导致 gradle 崩溃.要解决它,请删除 pom 中没有版本的所有依赖项:

publishing {
    publications {
        mavenJar(MavenPublication) {
            pom.withXml {
                def pomNode = asNode()
                pomNode.dependencyManagement.replaceNode {}

                // simply remove dependencies without a version
                // version-less dependencies are handled with dependencyManagement
                // see https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/8 for more complete solutions
                pomNode.dependencies.dependency.findAll {
                    it.version.text().isEmpty()
                }.each {
                    it.replaceNode {}
                }
            }
            from components.java
        }
    }
    repositories {
        maven {
            credentials {
                username "username"
                password "password"
            }
            url "http://localhost/repo"
        }
    }
}

然后您可以使用 grails publish-plugingradle publish 发布您的插件

相关的 SO 问题:Grails 3 - How to publish to Artifactory