大佬教程收集整理的这篇文章主要介绍了使用 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,请注明来意。