我有一个具有以下结构的多项目构建:
Root project 'just-another-root-project'
+--- Project ':producer'
\--- Project ':consumer'
settings.gradle
根文件:
rootProject.name = 'just-another-root-project'
include 'consumer', 'producer'
...连接创建的模块。
producer.gradle
文件:
plugins {
id 'java-library'
}
group 'com.github.yarbshk.jarp'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven {
url 'http://maven.nuiton.org/release/'
}
}
dependencies {
implementation 'com.sun:tools:1.7.0.13'
}
...具有未在Maven Central中发布的外部依赖项(com.sun.tools
),因此我添加了指向Nuiton存储库的链接。
consumer.gradle
文件:
plugins {
id 'java'
}
group 'com.github.yarbshk.jarp'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
annotationProcessor project(':producer')
}
上述版本无法正常工作!为此,我被迫将所有存储库从producer.gradle
复制到consumer.gradle
。 所以问题是如何在没有过多依赖关系重复的情况下构建根项目?如何以正确的方式进行?感谢您的任何回答或提示:)
更新1 :
尝试使用上面显示的文件构建项目时,出现以下错误:
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all files for configuration ':consumer:compile'.
> Could not find com.sun:tools:1.7.0.13.
Searched in the following locations:
https://repo.maven.apache.org/maven2/com/sun/tools/1.7.0.13/tools-1.7.0.13.pom
https://repo.maven.apache.org/maven2/com/sun/tools/1.7.0.13/tools-1.7.0.13.jar
Required by:
project :consumer > project :producer
答案 0 :(得分:1)
您可以像这样直接在根项目中配置存储库:
根项目build.gradle :
// configure repositories for all projects
allprojects {
repositories {
mavenCentral()
maven {
url 'http://maven.nuiton.org/release/'
}
}
}
EDIT (来自您对其他回复的评论)
您也只能在根项目级别定义mavenCentral()
存储库(它将添加到所有项目的存储库中),并且仅为 producer 子项目配置http://maven.nuiton.org/release
存储库:< / p>
根项目
repositories {
// will apply to all project
mavenCentral()
}
生产者项目
repositories {
maven {
url 'http://maven.nuiton.org/release/'
}
// mavenCentral inherited from root project
}
消费项目
// no need to re-define repositories here.
答案 1 :(得分:0)
官方gradle教程中有专门针对此部分: https://guides.gradle.org/creating-multi-project-builds/#configure_from_above
根项目可以配置所有项目:
allprojects {
repositories {
jcenter()
}
}