maven - Gradle:无效发布 'maven': Artifact 文件不存在

标签 maven gradle java-11 gradle-plugin maven-publish

这里是 Java 11 和 Gradle 7.2。我正在尝试构建一个可重用的库,我可以(最终)将其发布到 Maven 存储库并拉入其他项目。但首先我只想将其发布到我本地的 m2 存储库。

项目目录结构如下:

mylib/
  lib/
    src/
    build.gradle

哪里build.gradle是:

plugins {
  id 'java-library'
  id 'maven-publish'
  id 'io.freefair.lombok' version "6.5.0-rc1"
}

sourceCompatibility = 1.11
targetCompatibility = 1.11
archivesBaseName = 'mylib'
version = '1.0.0-RC1'
group = 'org.example'

repositories {
  mavenCentral()
}

dependencies {
  // omitted for brevity
)

testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
}

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

tasks.named('test') {
  useJUnitPlatform()
}

publishToMavenLocal.configure {
  mustRunAfter build
}

当我运行gradle publishToMavenLocal时我得到:

% ./gradlew clean build publishToMavenLocal

> Task :lib:publishMavenPublicationToMavenLocal FAILED
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':lib:publishMavenPublicationToMavenLocal'.
> Failed to publish publication 'maven' to repository 'mavenLocal'
   > Invalid publication 'maven': artifact file does not exist: '/Users/myuser/workspace/mylib/lib/build/libs/mylib-1.0.0-RC1.jar'

* 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

BUILD FAILED in 833ms
6 actionable tasks: 6 executed

所以看起来即使我指定(在命令行上)运行 clean 然后 build 然后 publishToMavenLocal ,即使我什至指定(在 build.gradle 中) publishToMavenLocal必须在 build 之后运行,看来发生的事情是:

  1. publishToMavenLocal 坚持先运行(在 cleanbuild 之前)
  2. 由于 JAR 尚未构建,因此指定位置 ( "build/libs/${archivesBaseName}-${version}.jar" ) 不存在 JAR 文件
  3. 构建失败,因为 Artifact 不存在

所以我认为我只需要得到 buildpublishToMavenLocal之前运行但我没主意了。

最佳答案

您正在混合 plugins DSL (插件 { }) 与 legacy plugin application (应用插件)。这不是什么大问题,但你应该选择 @sean 的 answer并使用插件 DSL 来解决您的问题。

针对您手头的问题

Could not get unknown property 'plugin'

发生这种情况是因为您错过了应用插件中的:

apply plugin: 'maven-publish'

关于maven - Gradle:无效发布 'maven': Artifact 文件不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72625362/

相关文章:

java - Maven默认arhcetype : jersey-qucikstart-webapp unable to run webapp - [Fatal Error] :3:6:

java - 使用 eclipse buildship 创建的新项目配置不正确(无法识别包)

android - 在类型为org.gradle.api.Project的根项目 '..'上找不到参数[build ..]的方法android()方法

android - Gradle:构建 flavor 时从 src/main 中排除包

java - ServiceLoader和始终有效的服务

maven - 在 Windows 8.1 上构建 Hadoop 2.6.0 失败 - Ant BuildException

java - 添加了 Spring RestTemplate,启动到 Tomcat7 时出现异常

java - 无法加载库: xuggle; version: 5; Using POM

java - 通过从 Java 8 到 Java 11 的 CDATA XML 转换处理换行符的变化

Java将日期时间从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.S"或从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.SSS"