java - 使用 Gradle 上传文件到 GitLab Maven 仓库

标签 java maven gradle gitlab

我使用 Gradle 和 Gradle Maven plugin将文件上传到 Maven Central。这很好用。我也想将相同的文件上传到 GitLab Maven 存储库。上传到这个 repo 需要 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/* 必须用作存档地点。我该怎么做?

最佳答案

请注意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/

相关文章:

java - 从存储库获取 spring roo

android - 如何在 Gradle 中编译 fork 库?

android - 将约束 View 与数据绑定(bind)一起使用会导致错误 "Execution failed for task ' :app:mergeDebugResources'. >

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

java - 在 MyBatis 中添加一个项目列表,在 SQL 列中共享一个值

java - hibernate 与 master 值一对一保存

java - ClassNotFoundException 与 ResteasyClientBuilder (JBOSS)

java - 无法从 Tomcat 上的 Maven 项目部署我的 servlet

java - 如何修复此错误 AAPT2 错误 : check logs for details?

Java 非法监视器状态异常