2016-09-06 5 views
0

私はカスタムプラグインからpublish(PublisherConfig)、defaults(defaultsClosure)のプロパティを設定しようとしています。これを行う最善の方法は何ですか?Gradle Artifactoryプラグインのデフォルト設定/プロパティをカスタムプラグインから公開するには

私は以下を試みました。

アプローチ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) 

     } 

`` `

コンパイルとビルドは成功し、アーティファクトとその情報は公開されません。

:artifactoryPublish

BUILD SUCCESSFUL

合計時間:3.313秒ここ

答えて

0

は私のために働いていたものです!

`

 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) 
     } 

`