我在基于gradle的项目中构建一些相互依赖的模块时遇到了问题。我想要做的是有一个项目(类似于我曾经使用的一些maven项目),其中依赖项是在每个其他版本上,所以当部署到maven存储库时,可用,但构建模块构建的依赖关系。
为了说明,我有一个带有几个子模块的gradle项目。
ProjectA
|- module-a
\- module-b (depends on module-a)
在模块b中,我使用compile "{groupId:module-b:{versionName}
指定依赖项,在项目根build.gradle中,我有
project(':module-b') {
dependencies {
compile project(':module-a')
}
}
另一个依赖于另一个项目的项目。
ProjectB
\- module-c (depends on module-b)
构建ProjectB时,存在无法找到ProjectA:module-a:unspecified
的错误。为module-b生成的pom确实包含了这种依赖。
如果我删除ProjectA的根build.gradle
中的依赖项规范,当我尝试构建时,module-b找不到module-a(在依赖项解析阶段)。 module-a还没有在任何地方部署,所以这对我来说很有意义。
我希望module-b依赖于它的兄弟,但是它的pom显示了maven风格的版本依赖关系,因此module-c可以依赖于module-b并且可以传递地获取module-a。
(不要求ProjectB是一个gradle项目。不管maven还是gradle都应该工作。)
Gradle配置文件
settings.gradle
include 'module-a', 'module-b'
的build.gradle
project(':module-b') {
apply plugin: 'java'
dependencies {
compile project(':module-a')
}
}
模块-A /的build.gradle
group 'com.example.coatedmoose'
version '1.0.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
mavenLocal()
}
}
}
模块-B /的build.gradle
group 'com.example.coatedmoose'
version '1.0.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'maven'
dependencies {
compile 'com.example.coatedmoose:module-a:1.0.0-SNAPSHOT'
}
uploadArchives {
repositories {
mavenDeployer {
mavenLocal()
}
}
}