DOIFOR技术Gradle打包时的依赖传递
DOIFOR技术Gradle打包时的依赖传递

Gradle打包时的依赖传递

技术问题处理

关于直接仅使用maven-publish时打包上传至gitea后,依赖无法传递问题

image

直接使用之前的example打包上传后,在服务端引入jar后,发现无法继承、实现,其原因时无法识别其中的依赖。对比了其他开源的jar,发现在MANIFEST.MF文件中没有依赖版本。

image

找了((20241224235320-oe9gie5 "相关文档")),发现需要引入java-library插件,然后使用api引入依赖,apiimplementation的区别就是api会对外公开依赖,implementation则不会公开。因此第三方服务引入该jar后无法识别依赖。因此主要做以下两点修改:

  • 引入java-library插件

    plugins {
      id 'java'
      id 'java-library'
      id 'com.google.protobuf' version '0.9.4'
      id 'application'
      id 'maven-publish'
    }
  • 将implementation改为api

    dependencies {
      api 'io.grpc:grpc-netty:1.69.0' //核心grpc的依赖
      api 'io.grpc:grpc-protobuf:1.69.0'//核心grpc的依赖
      api 'io.grpc:grpc-stub:1.69.0'//核心grpc的依赖
      api 'javax.annotation:javax.annotation-api:1.2'
    
      api 'com.google.protobuf:protobuf-java:4.28.2' //核心protobuf的依赖的插件
      api 'com.google.protobuf:protobuf-java-util:4.28.2' //核心protobuf的依赖的插件
      testImplementation platform('org.junit:junit-bom:5.10.0')
      testImplementation 'org.junit.jupiter:junit-jupiter'
      protobuf files("proto/")
    }

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注