plugins - 如何从自定义插件设置Gradle Artifactory Publish插件默认配置/属性

标签 plugins gradle properties artifactory

我一直在尝试从我的自定义插件设置publish(PublisherConfig),defaults(defaultsClosure)的属性。做这个的最好方式是什么 ?

我尝试了以下方法;

方法1:尝试在扩展上设置属性project.getExtensions().publishing.getProperties().each { println it }
方法2:尝试在Gradle Artifactory插件上添加编译时间相关性并导入插件类...
```

        if (project.plugins.hasPlugin("com.jfrog.artifactory")) {
            println "I found jfrog.artifactory plugin"
            Plugin jfrogArtifactory = project.getPlugins().getPlugin("com.jfrog.artifactory")

            ArtifactoryPluginConvention apc = new ArtifactoryPluginConvention(project);
            project.getExtensions().add("artifactory", apc);

            apc.contextUrl = 'https://myrepo.com/artifactory/'


            PublisherConfig pc = new PublisherConfig(apc);

            pc.defaults {
                println "in my plugin pc.defaults : " + it.metaClass

                publications('mavenJava')
                publishConfigs('archives', 'published')


                properties = ['my.gitCommitUrl': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitCommitUrl, 'my.gitHash': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitHash, 'my.gitBranch': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitBranch]
                publishBuildInfo = true   //Publish build-info to Artifactory (true by default)
                publishArtifacts = true   //Publish artifacts to Artifactory (true by default)
                publishPom = true   //Publish generated POM files to Artifactory (true by default).
                publishIvy = false   //Publish generated Ivy descriptor files to Artifactory (true by default).

            }

            pc.repository {
                println "in my plugin pc.repository : " + it.metaClass
                repoKey = 'my-mvn'   //The Artifactory repository key to publish to
                username = project.findProperty("artifactory_user") ?: ""          //The publisher user name
                password = project.findProperty("artifactory_api_key") ?: ""       //The publisher password
            }

            apc.setPublisherConfig(pc)

        }

```

编译和构建成功, Artifact 及其信息未发布。

:artifactoryPublish

建立成功

总时间:3.313秒

最佳答案

这对我有用!!!

`

        if (project.plugins.hasPlugin("com.jfrog.artifactory")) {
            Plugin jfrogArtifactory = project.getPlugins().getPlugin("com.jfrog.artifactory")

            //maven install task is required to publishPom (using artifactory plugin)
            if (!project.plugins.hasPlugin("maven")) {
                project.apply(plugin: MavenPlugin)
            }

            Closure artifactoryPublishClosure = {
                contextUrl = 'https://myrepo.com/artifactory/'

                publications('mavenJava')

                publishConfigs('archives', 'published')

                properties = ['gitCommitUrl': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitCommitUrl, 'gitHash': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitHash, 'gitBranch': project.getExtensions().findByType(BuildPropertiesPluginExtension.class).gitBranch]

                publishBuildInfo = true   //Publish build-info to Artifactory (true by default)
                publishArtifacts = true   //Publish artifacts to Artifactory (true by default)
                publishPom = true   //Publish generated POM files to Artifactory (true by default).
                publishIvy = false   //Publish generated Ivy descriptor files to Artifactory (true by default).

                // Redefine basic properties of the build info object
                clientConfig.setIncludeEnvVars(true)
                clientConfig.timeout = 600 // Artifactory connection timeout (in seconds). The default timeout is 300 seconds.

                publish {
                    //A closure defining publishing information
                    repository {
                        repoKey = 'my-mvn'   //The Artifactory repository key to publish to
                        username = project.findProperty("artifactory_user") ?: ""          //The publisher user name
                        password = project.findProperty("artifactory_api_key") ?: ""       //The publisher password
                    }
                }

                resolve {
                    repository {
                        repoKey = 'my-mvn'  //The Artifactory (preferably virtual) repository key to resolve from
                    }
                }

            }

            project.getTasks().findByName("artifactoryPublish").configure(artifactoryPublishClosure)
        }

`

关于plugins - 如何从自定义插件设置Gradle Artifactory Publish插件默认配置/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339191/

相关文章:

java - 为什么没有检测到 JAVA 版本? Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8

安卓工作室错误 :Execution failed for task ':app:compileDebugJavaWithJavac'

excel - 列出 VBA 2003 中类的属性

javascript - .defineProperty 方法期间调用堆栈和 this 的行为

vb.net - 直接给对象赋值

java - 如何让 Maven 使用某些插件的最新版本?

c# - 替换仅通过反射加载的程序集

android-studio - 在Android Studio中构建Movesense示例时出错。无法解决::mdslib:1.28打开文件

plugins - Sublimetext 2 的一个很好的免费 ftp 插件

javascript - 如何在谷歌中搜索 javascript 文件?