代码之家  ›  专栏  ›  技术社区  ›  Chris F

可以发布到mavenLocal,但不能发布到远程仓库?

  •  0
  • Chris F  · 技术社区  · 4 年前
    $ ./gradlew -version
    
    ------------------------------------------------------------
    Gradle 6.5
    ------------------------------------------------------------
    
    Build time:   2020-06-02 20:46:21 UTC
    Revision:     a27f41e4ae5e8a41ab9b19f8dd6d86d7b384dad4
    
    Kotlin:       1.3.72
    Groovy:       2.5.11
    Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
    JVM:          1.8.0_181 (Oracle Corporation 25.181-b13)
    OS:           Mac OS X 10.15.7 x86_64
    

    我有一个子项目,包括以下内容 build.gradle 文件

    plugins {
        id 'java'
        id 'maven-publish'
    }
    
    dependencies {
        compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.10'
        annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.10'
    
        compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
    }
    
    task sourcesJar(type: Jar, dependsOn: classes){
        from sourceSets.main.allSource
    }
    
    artifacts{
        archives sourcesJar
    }
    
    publishing {
        repositories{
            maven {
                url 's3://' + s3_bucket
                authentication {
                    awsIm(AwsImAuthentication)
                }
            }
        }
        publications {
            integrationsCommon(MavenPublication){
                artifactId artifactId
                from components.java
                artifact sourcesJar{
                    classifier "sources"
                }
            }
        }
    }
    

    我能跑

    $ ./gradlew clean build pTML -p my-sub-project
    

    …并在我的 ~/.m2 本地回购。

    但当我运行 publish 任务

    $ ./gradlew clean build publish -p my-sub-project
    * What went wrong:
    Execution failed for task ':my-sub-project:publishIntegrationsCommonPublicationToMaven2Repository'.
    > Failed to publish publication 'integrationsCommon' to repository 'maven2'
       > java.lang.NullPointerException (no error message)
    

    为什么?我的印象是,如果可以发布到Maven本地,我就可以在任何地方发布!(天哪,我想念Maven!)。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Martin Zeitler    4 年前

    AWS documentation 建议定义 credentials .

    这只是指CodeArtifact,而不是S3,S3似乎是常见的后端。如果你想改用S3。。。添加 --stacktrace 为了确定那是什么 NullPointerException 可能由以下原因引起:;配置可能缺少一些必要的东西。

    这将是S3的Gradle文档: AWS S3 repositories configuration .