Gradle 插件 - 对纯 java 模块的依赖

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

我希望我的 gradle 插件依赖于一些可以在 gradle 插件内部以及 android 库内部使用的通用代码。

有没有办法在 gradle 插件和 android 库之间共享纯 java/kotlin 代码?

当我尝试将模块添加到 gradle 插件时,出现“无法在项目中找到”错误...我尝试了

includeBuild
include
的不同组合,但它们没有解决问题...

示例:

Gradle 插件:

plugins {
    `kotlin-dsl`
    `java-gradle-plugin`
    `maven-publish`
}

dependencies {
    // fails
    implementation(project(":Library:Plugin:Shared"))
    //implementation(project(":library:plugin:shared"))
}

图书馆模块:

plugins {
    id("com.android.library")
    id("kotlin-android")
    id("kotlin-parcelize")
    id("maven-publish")
}

android {

    // ...
}

dependencies {
    api(project(":Library:Plugin:Shared"))
}

共享模块:

repositories {
    mavenCentral()
}

plugins {
    id("org.jetbrains.kotlin.jvm")
    `java-library`
    `maven-publish`
}

dependencies {
}

settings.gradle.kts:

pluginManagement {
    includeBuild(File("library/plugin/gradle"))
}

include(":Library:Plugin:Shared")
project(":Library:Plugin:Shared").projectDir = file("library/plugin/shared")

include(":Library:Plugin:Gradle")
project(":Library:Plugin:Gradle").projectDir = file("library/plugin/gradle")

gradle gradle-plugin
1个回答
0
投票

为此,您需要一个包含的构建

以下是一些入门的分步说明。

  1. 设置您包含的构建项目:

    • 在主项目文件夹下放置一个新文件夹。称呼它,说,
      myIncludedBuild
    • 给它自己的
      settings.gradle.kts
      文件。
    • 给它一个
      build.gradle.kts
      文件,然后在其中应用 Java 库插件并给项目一个组。
    plugins {
       `java-library`
    }
    
    group = "myIncludedBuildGroup"
    
  2. myIncludedBuild/src/main/java

    中写入您的共享代码
  3. 将构建包含在您的主

    settings.gradle.kts
    中:

    includeBuild("myIncludedBuild")
    
  4. 现在,在您想要使用包含的构建的任何构建脚本中,使用 Maven 坐标将其添加到类路径中:

    buildscript {
        dependencies {
            classpath("myIncludedBuildGroup:myIncludedBuild")
        }
    }
    

    更好的是,使用 Java Gradle 插件 编写和配置插件,它将可以应用于您的

    plugins
    块中。

  5. 此外,构建代码将可用作主构建中任何项目的库,也可使用 Maven 坐标:

    dependencies {
        implementation("myIncludedBuildGroup:myIncludedBuild")
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.