新手Gradle查询。考虑项目的结构
Project
|
-component_1
|
-component_2
我想从每个组件源生成一个jar,它位于src目录下。请注意,这不是一个多项目场景,而是一种多组件。我怎么能在Gradle(1.6)
中做到这一点更新
需要单个构建文件,而不是每个组件具有单独的构建
答案 0 :(得分:11)
你提到一些组件相互依赖,所以我也想知道为什么你不想将它作为一个多项目构建来实现。现在,让我们假设您的所有组件都是独立的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将编译您的生产和测试源代码,运行您的单元测试并在目录build/libs
下汇编JAR文件。
修改强>
您可以按照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']
}
}
}
}