Gradle发布多项目

时间:2018-07-14 15:32:27

标签: gradle multi-project maven-central

我正在图书馆。它由一个根项目(即公共API)和多个其他项目(其内部工作)组成。

当某人将我的库声明为依赖项时,他不应有权访问子项目(因此我用implementation声明了它们的依赖项。)

问题是我只想将根项目发布到MavenCentral-这并不意味着要允许用户将子项目声明为依赖项(它们不是API的一部分)。

当前,我设法将根项目推送到MavenCentral(使用maven插件等),但是当我将其声明为任何其他项目的依赖项时,我得到:

Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not find wflib-java:wflib-java-http:unspecified.

我期望子项目被包含在归档中,因为需要它们吗?


如何复制:

以这种方式创建一个多项目:

root
  sub1
    build.gradle (sub1)
  build.gradle (root)

build.gradle(根)

plugins {
    id 'java'
    id 'maven' // To export to Maven
    ...
}

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    implementation project(':sub1')
}

uploadArchives { ... }

settings.gradle(根)

// Generated by IntelliJ
rootProject.name = ...
include 'main'

include 'sub1'
findProject(':sub1')?.name = 'sub1'

build.gradle(sub1)

plugins {
    id 'java'
}

repositories { ... }

dependencies { ...junit... }

如何在不将每个子项目发布到MavenCentral的情况下解决此问题(这没有意义,因为它们不是API的一部分,并且不应访问)?基本上,我期待一种在发布时将子项目“嵌入”到根项目中的方法,但是我真的不确定如何做到这一点。

0 个答案:

没有答案