这是一个基本的问题,但我找不到答案: 如果我有多个共享相同根目录的独立项目,我应该如何为它们使用不同的build.gradle文件?
例如目录结构如下:
src/main/java/package1/base1/project1package/
src/main/java/package1/base1/project2package/
看起来build.gradle文件应该放在root用户,但是如何区分两个完全独立且彼此无关的项目?当我使用gradle build命令时,如何指定要构建的一个项目?感谢。
答案 0 :(得分:0)
说实话,我不喜欢你提出的结构。标准的看起来像这样:
<root>/build.gradle <root>/<subproject1>/build.gradle <root>/<subproject1>/src/main/java/<basepackage>/<subproject1>/ <root>/<subproject2>/build.gradle <root>/<subproject2>/src/main/java/<basepackage>/<subproject2>/
子项目1 和子项目2 彼此独立。此外:
<root>/build.gradle
可以包含所有子项目共有的构建配置,任务等。然后,子项目1特定的内容在<root>/<subproject1>/build.gradle
gradle build
中执行<root>/
,则会构建所有子项目。如果您在&lt; root&gt; /&lt; subproject1&gt; /中执行此操作,则只会构建子项目1 。有关详情,请参阅http://www.gradle.org/docs/current/userguide/multi_project_builds.html
答案 1 :(得分:0)
如果我不在基础,请告诉我,但基本上我认为你想要做的只是从两组源中生成两个独立的JAR,这些源恰好存在于同一个根目录中。正如@Tomas所提到的,这是构建项目的一种非常有趣的方式,但假设您无法更改项目结构,则可以创建自定义source sets来解决此问题。
您的构建可能看起来像这样。
apply plugin: 'java-base'
sourceSets {
projA {
java {
srcDir 'src/main/java'
include 'pkg1/**'
}
}
projB {
java {
srcDir 'src/main/java'
include 'pkg2/**'
}
}
}
task projAJar(type: Jar) {
baseName 'projA'
from sourceSets.projA.output
}
task projBJar(type: Jar) {
baseName 'projB'
from sourceSets.projB.output
}
虽然这是技术上一个 Gradle项目,但这两个源集都有自己的编译任务,jar任务和配置。您可以像这样配置依赖项。
dependencies {
projACompile 'foo.org:lib:1.0'
projBCompile 'bar.org:lib:2.0'
}