我使用 Gradle 和 Gradle Maven plugin将文件上传到 Maven Central。这很好用。我也想将相同的文件上传到 GitLab Maven 存储库。上传到这个 repo 需要 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/*
必须用作存档地点。我该怎么做?
最佳答案
请注意the maven-publish
plugin “现在是使用 Gradle 发布 [Maven] Artifact 的首选选项”(另请参阅您链接的 the page 顶部的注释)。恕我直言,使用 maven
插件做你需要的事情会更麻烦,因为它更复杂而且没有很好的文档记录。因此,当我在回答您的问题时考虑到 maven-publish
插件时,我希望您不会介意。
至于使用特殊 HTTP header 值的身份验证,您应该可以按以下方式解决(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 进行身份验证的问题。如果您在配置发布时遇到问题,那么我建议将其作为一个单独的问题发布,并提供有关您的设置以及可能已经尝试过的内容的更多详细信息。
编辑添加:如果您需要根据某些命令行选项使用不同的 header 凭据,您可以将上面的 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=...
部分。
关于java - 使用 Gradle 上传文件到 GitLab Maven 仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898752/