运行publishToMavenLocal后,jar文件没有在maven本地存储库中生成

the*_*her 6 gradle maven maven-publish

我正在尝试生成一个 jar,以便我可以将其用作不同项目的依赖项。在 build.gradle 中,我定义了 maven-publish id 和发布任务,但只生成以下文件 - 但我需要custom-codegen-0.0.1-SNAPSHOT.jar

custom-codegen-0.0.1-SNAPSHOT-plain.jar
custom-codegen-0.0.1-SNAPSHOT.module
custom-codegen-0.0.1-SNAPSHOT.pom
maven-metadata-local.xml
Run Code Online (Sandbox Code Playgroud)

构建.gradle

plugins {
    id 'org.springframework.boot' version '2.5.6'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'maven-publish'
}

group = 'com.tmo5'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}


publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            versionMapping {
                usage('java-api') {
                    fromResolutionOf('runtimeClasspath')
                }
                usage('java-runtime') {
                    fromResolutionResult()
                }
            }
        }
    }
    repositories {
        maven {
            def releasesRepoUrl = "$buildDir/repos/releases"
            def snapshotsRepoUrl = "$buildDir/repos/snapshots"
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*teo 3

除非您正在创建 Spring Boot 应用程序,否则不应应用 Spring Boot Gradle 插件。它不适用于创建 Spring Boot 库或一般的 Spring 库。它用于创建 Spring Boot 应用程序。Spring Boot Gradle 插件会对应用于项目的各种插件做出反应,如文档中所述

其次,如果您希望您发布的工件被另一个工件使用,那么您应该使用java-library

话虽如此,您的 Gradle 构建应该类似于:

plugins {
    id 'java-library'
    id 'maven-publish'
}

group = 'com.tmo5'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    api platform('org.springframework.boot:spring-boot-dependencies:2.5.6')
    api 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            versionMapping {
                usage('java-api') {
                    fromResolutionOf('runtimeClasspath')
                }
                usage('java-runtime') {
                    fromResolutionResult()
                }
            }
        }
    }
    repositories {
        maven {
            def releasesRepoUrl = "$buildDir/repos/releases"
            def snapshotsRepoUrl = "$buildDir/repos/snapshots"
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
        }
    }
}
Run Code Online (Sandbox Code Playgroud)