新手 Gradle 查询。考虑以下项目结构
Project
|
-component_1
|
-component_2
我想从每个组件源生成一个 jar,它位于 src 目录下。请注意,这不是一个多项目场景,而是一种多组件。我如何在 Gradle (1.6) 中做到这一点
更新:
需要一个构建文件,而不是每个组件都有单独的构建
您提到某些组件相互依赖,所以我也想知道为什么您不想将其作为多项目构建来实现。现在,让我们假设您的所有组件都是独立的 Gradle 项目。鉴于它们生成了一个 JAR 文件,它们似乎是 Java 项目。我会build.gradle
为每个项目创建一个文件。
.
└── your-project
└── component1
│ ├── build.gradle
│ └── src
└── component2
├── build.gradle
└── src
对于这些项目中的每一个,我们将应用 Java 插件。此插件引入的标准约定的唯一区别是您的源文件位于目录中,src
而不是src/main/java
. build.gradle
要进行配置,您只需将以下内容放入文件中:
apply plugin: 'java'
sourceSets {
main {
java {
srcDirs = ['src']
}
}
}
如果您gradle build
为任何项目执行,Gradle 将编译您的生产和测试源代码,运行您的单元测试并在目录下组装 JAR 文件build/libs
。
编辑:
您可以按照 Matt 在他的评论中解释的方式实现这一点,也可以采用多项目构建方法。我整理了以下代码示例来为您提供思路。在项目的根级别创建两个文件:build.gradle
和settings.gradle
.
.
└── your-project
├── build.gradle
├── settings.gradle
├── component1
│ └── src
└── component2
└── src
在settings.gradle
文件中包含作为您构建的一部分的项目,如下所示:
include 'component1', 'component2'
然后在您的build.gradle
文件中,您只需将项目定义放入subprojects
配置块中即可定义一次。这意味着它适用于您构建的所有子项目。使用这种方法,您可以定义常见行为而无需重复代码。
subprojects {
apply plugin: 'java'
sourceSets {
main {
java {
srcDirs = ['src']
}
}
}
}