2017-03-05 127 views
0

在我的build.gradle腳本中,發佈在groupId未定義時工作。我想爲「groupId」使用「org.company.foobar.common」。gradle artifactory插件無法使用groupID發佈

當我取消註釋以下build.gradle腳本中的groupId行時,我收到一個錯誤。該腳本下面是定義此groupId時的執行結果。

buildscript { 
    repositories { 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/jcenter/"} 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/MavenCentral/"} 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/gradlePlugins/"} 
    } 

dependencies { 
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release" 
    } 
} 

    repositories { 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/jcenter/"} 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/MavenCentral/"} 
    maven { url "http://tribe.ust.doj.gov:8085/artifactory/gradlePlugins/"} 
    } 

apply plugin: 'java' 
apply plugin: 'maven' 
apply plugin: 'maven-publish' 
apply plugin: "com.jfrog.artifactory" 

def getArtifactoryUrl() { 
    return "http://tribe.ust.doj.gov:8085/artifactory/" 
} 

allprojects { 
    repositories { 
     def artifactoryMcentralUrl = getArtifactoryUrl() + "MavenCentral/" 
     maven {url artifactoryMcentralUrl } 
    } 
} 

    dependencies { 

} 

sourceSets { 
    main { 
     java { 
      srcDir "/src" 
     } 
    } 
} 

//project.group = 'org.company.foobar.common' 

task printProps { 
    doLast { 
     println artifactory_user 
     println artifactory_contextUrl 
     //println project.group 
    } 
} 

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      //groupId project.group 
      artifactId project.getName() 
      version '1.0.0' 
      from components.java 
     } 
    } 
} 

artifactory { 
    def artifactoryUrl = getArtifactoryUrl() 
    contextUrl = artifactoryUrl 
    publish { 
     repository { 
      repoKey = 'libs-snapshot-local' 
      username = "${artifactory_user}" 
      password = "${artifactory_password}" 
     } 
     defaults { 
      publications('mavenJava') 
      publishArtifacts = true 
      publishPom = true 
     } 
    } 
} 

使用的groupId(取消註釋)當從「gradle這個artifactoryPublish」輸出是:

$ gradle artifactoryPublish 
:generatePomFileForMavenJavaPublication 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:jar UP-TO-DATE 
:artifactoryPublish 
Deploying artifact: http://tribe.ust.doj.gov:8085/artifactory/libs-snapshot-local/org/company/foobar/common/kambucha/1.0.0/kambucha-1.0.0.jar 
:artifactoryPublish FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':artifactoryPublish'. 
> java.io.IOException: Failed to deploy file. Status code: 409 Response message: Artifactory returned the following errors: 
The repository 'libs-snapshot-local' rejected the resolution of an artifact 'libs-snapshot-local:org/company/foobar/common/kambucha/1.0.0/kambucha-1.0.0.jar' due to conflict in the snapshot release handling policy. Status code: 409 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 1.84 secs 

回答

3

,因爲它似乎,你正試圖到釋放神器發佈到快照庫。在Artifactory中使用Maven倉庫時,您需要確保您遵循Maven佈局和發佈/快照策略。 在這個特定的例子中,您的問題似乎如下: Artifactory遵循maven策略,正在識別以下路徑: 'libs-snapshot-local:org/company/foobar/common/kambucha/1.0.0/kambucha -1.0.0.jar'作爲發行版,而存儲庫被設置爲僅處理快照。對於這種特定的工作路徑,如果這實際上是快照工件,則需要將路徑更改爲: libs-snapshot-local:org/company/foobar/common/kambucha/1.0.0-SNAPSHOT/kambucha-1.0.0-SNAPSHOT.jar

如果這是一個版本,改爲使用「庫釋放本地」倉庫

你可以閱讀更多的資源庫配置here

+0

我你的部署路徑添加了擴展名'-SNAPSHOT'。到版本和部署成功。到存儲庫配置的鏈接也很有價值。 –

相關問題