程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Maven 发布任务时出现 Gradle 错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Maven 发布任务时出现 Gradle 错误?

开发过程中遇到使用 Maven 发布任务时出现 Gradle 错误的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Maven 发布任务时出现 Gradle 错误的解决方法建议,希望对你解决使用 Maven 发布任务时出现 Gradle 错误有所启发或帮助;

我使用的是 Gradle 版本 6.7.1,目前,在我的应用程序中,我遇到了 maven 发布任务的问题。

我们将发布任务保存在名为 (nexusgradle-1.0.5.gradlE) 的中央位置 Gradle 文件中,并通过 apply from

导入

中心位置Gradle(nexusgradle-1.0.5.gradle)的内容如下,其中包含快照和发布的nexus repo信息以及将artefacts推送到nexus的用户凭据。

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.web
        }
   }
    repositorIEs {
        maven {
            credentials {
                username 'uploader'
                password 'uploaderpassword'
            }
            println 'A message which is logged at QUIET level'
            name 'Nexus_Repo'
            def releasesRepoUrl = 'http://<hostname>/repository/<maven-releases>/'
            def snapshotsRepoUrl = 'http://<hostname>/repository/<maven-snapshots>/'
            url = project.version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
        }
    }
}

应用程序 Gradle(子 Gradle 文件)如下所示

import org.apache.tools.ant.filters.replaCETokens

plugins {
    ID 'war'
    // Add git release plugin for versioning snaphots and release builds
    ID 'pl.allegro.tech.build.axion-release' version '1.10.1'
    ID 'org.springframework.boot' version '2.1.4.RELEASE'
    // Add Git propertIEs plugin.
    ID 'com.gorylenko.gradle-git-propertIEs' version '2.2.0'
    ID 'jacoco'
 }

// apply from center LOCATIOn
apply from :'http://<hostaname>/repository/thirdparty/com/mf/nexusgradle/1.0.5/nexusgradle-1.0.5.gradle'






repositorIEs {
        maven {
        url = 'http://<hostname>/repository/groupRepo/'
        }
    jcenter()
    }

test {
    testLogging.showStandardStreams = true
    maxParallelForks = 3

    ignore@R_651_4895@ = true // to skip test @R_651_4895@
    testLogging { //logging the test
        exceptionFormat = 'full'
        events "passed","skipped","Failed"
    }
}

jacoco {
    toolVersion = '0.8.3'
}

jacocoTestReport {
    dependsOn test // tests are required to run before generaTing the report
    reports {
        xml.enabled true //enabling for generate xml for to capture data in sonarqube server
    }
}

// Customize Git propertIEs plugin.
gitPropertIEs {
    // Change date format in git.propertIEs file.
    dateFormat = "yyyy-MM-dd HH:mm:ssZ"
    dateFormatTimeZone = 'GMT'
}

dependencIEs {
    implementation 'org.springframework.boot:spring-boot:2.1.4.RELEASE'
    // mutliple import below 
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

scmVersion {
    repository {
        directory = project.rootProject.file('.')
    }
}

group = 'com.package'
description = 'appname'
project.version = scmVersion.version
project.ext.timestamp = new Date().format("dd/MM/yyyy HH:mm:ss")

processresources {
    filter replaCETokens,tokens:[BUILD_VERSION: project.version,BUILD_timestAMP: project.ext.timestamp]
}

tasks.withType(JavaCompilE) {
    options.enCoding = 'UTF-8'
}

war {
    enabled = true
}



springBoot {
    buildInfo()
}

bootWar {
    archiveClassifIEr = 'boot'
    mainClassname = 'com.package.appname.SpringBootRunner'
}

当我运行 Gradle 命令进行发布时

gradlew clean build publish

任务将失败,因为发布任务将尝试将快照的工件推送到发布存储库而不是快照存储库。

  > Configure project :
A message which is logged at QUIET level

> Task :clean UP-TO-DATE
> Task :bootBuildInfo

> Task :compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :generateGitPropertIEs
> Task :processresources
> Task :classes
> Task :bootWar
> Task :war
> Task :assemble
> Task :check
> Task :build
> Task :generateMetaDATAFILEForMavenJavaPublication
> Task :generatePomfileForMavenJavaPublication
> Task :publishMavenJavaPublicationToNexus_RepoRepository Failed

FAILURE: Build Failed with an exception.

* what went wrong:
Execution Failed for task ':publishMavenJavaPublicationToNexus_RepoRepository'.
> Failed to publish publication 'mavenJava' to repository 'Nexus_Repo'
   > Could not PUT 'http://<hostname>/repository/maven-releases/com/package/appname/1.0.9-SNAPSHOT/maven-Metadata.xml'. Received status code 400 from server: Repository version policy: RELEASE does not allow Metadata in path: com/package/appname/1.0.9-SNAPSHOT/maven-Metadata.xml

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --deBUG option to get more log output. Run with --scan to get full insights.

* Get more Help at https://Help.gradle.org

但是如果我删除 apply from: 项并将发布任务带到应用程序 Gradle(子 Gradle 文件)文件中,它将正常工作,构建工件被推送到快照存储库而没有任何问题。

> Configure project :
A message which is logged at the QUIET level

> Task :clean UP-TO-DATE
> Task :bootBuildInfo

> Task :compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :generateGitPropertIEs
> Task :processresources
> Task :classes
> Task :bootWar
> Task :war
> Task :assemble
> Task :check
> Task :build
> Task :generateMetaDATAFILEForMavenJavaPublication
> Task :generatePomfileForMavenJavaPublication
> Task :publishMavenJavaPublicationToNexus_RepoRepository
> Task :publish

Deprecated Gradle features were used in this build,making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the indivIDual deprecation warnings.
See https://docs.gradle.org/6.7.1/userguIDe/command_line_interface.HTML#sec:command_line_warnings

BUILD succesSFul in 29s
10 actionable tasks: 9 executed,1 up-to-date

有人可以指导我,将 Maven 发布任务放在父 Gradle 文件中时我犯了什么错误?为什么子 Gradle 无法正确解析来自父级的值

解决方法

我找到了一种方法来修复它

后评价

经过修改,效果很好。 这是正确的方法吗?或者有什么更好的方法吗?

apply plugin: 'maven-publish'


afterEvaluate {project ->
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.web
        }
   }
    repositories {
        maven {
            credentials {
                username 'uploader'
                password 'uploaderpassword!'
            }
            name 'Nexus_Repo'
              def releasesRepoUrl = 'http://<hostname>/repository/<maven-releases>/'
            def snapshotsRepoUrl = 'http://<hostname>/repository/<maven-snapshots>/'
            url = project.version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
        }
    }
}

}
,

问题在于您的网址设置:

def releasesRepoUrl = 'http://<hostname>/repository/<maven-releases>/'
def snapshotsRepoUrl = 'http://<hostname>/repository/<maven-snapshots>/'

您需要指定一个有效的 URL,即主机名和 maven-releases、maven-snapshots 只是您应该自己自定义以适合您的远程存储库的占位符。

大佬总结

以上是大佬教程为你收集整理的使用 Maven 发布任务时出现 Gradle 错误全部内容,希望文章能够帮你解决使用 Maven 发布任务时出现 Gradle 错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用错误