在 gradle 上发布我的第一个工件时遇到问题

问题描述 投票:0回答:2

我在将我的第一个构建推送到 gradle 到 Nexus 上的远程服务器时遇到问题。构建成功,但是当我使用 ./gradlew 发布时,没有 jar 文件被推送到存储库。

下面是我的构建代码

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}

group 'com.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

apply plugin: 'maven-publish'

publishing {
    publications {
        maven(MavenPublication) {
            artifact("build/libs/my-app-$version"+".jar") {
                extension 'jar'
            }}
        }
    }

    repositories {
        maven {
            name 'nexus'
            url "http://159.65.23.158:8081/repository/maven-snapshots/"
            credentials {
                username project.repoUser
                password project.repoPassword

            }
        }
    }

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version: '5.2'
    testImplementation group: 'junit', name: 'junit', version: '4.12'
}

当我输入 ./gradlew 发布时,它的执行与 ./gradlew 构建命令相同。我已经检查了 Nexus 存储库,没有文件被推送到我的存储库。我正在做 Nana Janashia 的训练营,我一步一步地遵循,但不知道我哪里出错了?

gradle repository artifactory nexus
2个回答
0
投票

看起来发布任务并不依赖于 jar 任务,因此还没有生成可以从 libs 文件夹中获取的 jar。您可以通过运行

./gradlew publish --dry-run
查看正在运行的任务来确认这一点。

要解决此问题,我建议您将适当的 jar 任务传递给

artifact
方法,而不是 jar 的原始路径,即:

publishing {
    publications {
        maven(MavenPublication) {
            artifact(tasks.named(sourceSets.main.jarTaskName)) {
                extension 'jar'
            }
        }
    }
}

传递任务为 Gradle 提供了按正确顺序运行正确任务所需的信息。


0
投票

嘿@Muhammad Hussain 这对你有用吗?

© www.soinside.com 2019 - 2024. All rights reserved.