使用Gradle将档案上传到GitLab Maven存储库

时间:2018-12-22 19:35:01

标签: java maven gradle gitlab

我使用Gradle和Gradle Maven plugin将档案上传到Maven Central。这很好。我也想将相同的档案上传到GitLab Maven仓库。上传到此仓库需要authentication with special HTTP header values。但是我不知道如何使用Gradle Maven插件来做到这一点。 GitLab documentation描述了使用pom.xmlsettings.xml的基于Maven的构建过程。我目前所拥有的是:

使用Gradle创建的文件:

build/libs
├── wms-1.2.0.jar
├── wms-1.2.0.jar.asc
├── wms-1.2.0-javadoc.jar
├── wms-1.2.0-javadoc.jar.asc
├── wms-1.2.0-sources.jar
└── wms-1.2.0-sources.jar.asc
build/poms
└── pom-default.xml

根据GitLab文档的文件:

pom.xml
settings.xml

执行时

mvn deploy -s settings.xml

然后,pom-default.xml必须被“混合到” pom.xml中,并且build/libs/*必须用作存档位置。我该怎么办?

1 个答案:

答案 0 :(得分:4)

请注意,the maven-publish plugin“现在是使用Gradle发布[Maven]工件的首选选项”(另请参见链接的the page顶部的注释)。使用maven插件来做您需要做的事情会比较麻烦,因为它既复杂又没有文档说明,恕我直言。因此,希望您在介意使用maven-publish插件回答问题时不会介意。

关于使用特殊HTTP标头值进行的身份验证,您应该可以按照以下说明解决问题(via):

publishing {
    repositories {
        maven {
            url "http://repo.mycompany.com/maven2"
            credentials(HttpHeaderCredentials) {
                name = "Private-Token"
                value = "REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN"
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
}

我真的想使用旧的maven插件,然后建议从this section的文档开始研究如何解决身份验证问题。


顺便说一句:我主要是在这里回答了您有关如何使用GitLab进行身份验证的问题。如果您在配置发布时遇到麻烦,建议您将其作为一个单独的问题发布,其中包含有关设置以及您尝试过的内容的更多详细信息。


编辑后添加:如果您需要根据某些命令行选项使用不同的标头凭据,则可以将上面的credentials配置更改为以下内容:

credentials(HttpHeaderCredentials) {
    if (project.hasProperty('jobToken')) {
      name = "Job-Token"
      value = project.property('jobToken')
    } else {
      name = "Private-Token"
      value = "REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN"
    }
}

在此示例中,您可以在GitLab CI作业中运行./gradlew -PjobToken=REPLACE_WITH_YOUR_JOB_TOKEN …,而在本地工作时省去-PjobToken=…部分。