我正在图书馆。它由一个根项目(即公共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的一部分,并且不应访问)?基本上,我期待一种在发布时将子项目“嵌入”到根项目中的方法,但是我真的不确定如何做到这一点。