帖子Gradle multiple jars from single source folder讨论了如何生成多个.jar
文件。但是,如何依赖多项目构建的其他子项目中的.jar
个文件?
例如,假设我有这样的项目结构:
./
├── build.gradle
├── settings.gradle
├── foo/
│ ├── src/
│ │ ├── main/java/
│ │ └── plugins/java/
│ └── build.gradle
└── bar/
├── src/main/java/
└── build.gradle
foo/build.gradle
使用此任务构建额外的.jar
:
sourceSets {
plugins
}
task pluginsJar(type: Jar) {
from sourceSets.plugins.output
}
我可以在bar/build.gradle
中放入bar
取决于plugins.jar
?我试过这样做:
dependencies {
runtime project(':foo:plugins')
}
但格拉德说:
在项目':bar'
中找不到带路径':foo:plugins'的项目
答案 0 :(得分:1)
您不需要将它们作为jar发布,以将它们作为依赖项。为了使foo
成为bar
的依赖关系,这就是您所需要的。下面列出了一些方法,具体取决于您需要的配置。请参阅示例下方的链接。
// Compiles for test only
dependencies {
testCompile project(':foo')
}
// To have the dependency compiled in the project, if you make a stand alow jar then you will need to zip the files in the "Jar" task.
dependencies {
compile project(':foo')
}
dependencies {
runtime project(':foo')
}
// 2.13 gradle only - Allow to compile the project and load the jar from a source and add it to the classpath while the application is running
dependencies {
compileOnly project(':foo')
}
Chapter 23. Dependency Management
编辑:最有效的方法是使用gradles构建的多模块功能。您将能够在主项目中将每个插件作为一个单元进行管理,并能够将每个插件jar作为批量操作或使用不会影响其他插件或主应用程序的特定参数发布。你建立了一个,你可以在基础项目上调用jar
任务,并建立所有主题。您可以在应用程序启动时或在运行时动态加载插件。
Chapter 24. Multi-project Builds
以下是两个例子。
RootModule/
build.gradle
settings.gradle
ApplicationModule/
build.gradle
Plugin1Module/
build.gradle
Plugin2Module/
build.gradle
Plugin3Module/
build.gradle
或
Project 1 main application:
ApplicationModule/
build.gradle
settings.gradle
Project 2 plugins: (dependency on 1 API jar)
RootModule/
build.gradle
settings.gradle
Plugin1Module/
build.gradle
Plugin2Module/
build.gradle
Plugin3Module/
build.gradle
Plugin4Module/
build.gradle
Plugin5Module/
build.gradle
Plugin6Module/
build.gradle