我使用Gradle和Gradle Maven plugin将档案上传到Maven Central。这很好。我也想将相同的档案上传到GitLab Maven仓库。上传到此仓库需要authentication with special HTTP header values。但是我不知道如何使用Gradle Maven插件来做到这一点。 GitLab documentation描述了使用pom.xml
和settings.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/*
必须用作存档位置。我该怎么办?
答案 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=…
部分。