我在gradle中有一个多项目安装程序,结构有点像这样:
RootProject/
build.gradle
settings.gradle
SubProjectA/
build.gradle
anotherDirectory/
SubProjectB/
build.gradle
SubProjectC/
build.gradle
根项目实际上只是一个根构建。在那里可以将所有其他项目 bundle 在一起。 SubProjectB取决于SubProjectC,C取决于A。
从根项目运行任务按预期方式工作。我可以运行
gradle :SubProjectB:build
,它将构建SubProjectB及其依赖项而不会出现错误。我的问题是,如果我尝试从子项目的目录中运行任务,则该子项目依赖于其他任何子项目都将失败,因为它不知道没有根项目的其他子项目在哪里设置文件。因此,从其目录运行A的构建将可以工作,但是运行B或C的将失败。
在此结构中我可以做些什么来定义根项目实际上是什么,因此,如果我从B运行
gradle build
,它的行为与从根项目目录运行gradle :SubProjectB:build
的行为相同?最终目标是使从命令行使用gradle更加容易,并在子项目上获得功能上的默认任务。这样,我应该能够双击项目Eclipse的Gradle任务列表,并使它运行默认任务,就好像它是从根目录运行任务一样。
最佳答案
在这种情况下,您可以使用composite builds
。假设您在SubProjectA
并想针对SubProjectB
进行构建。您可以执行以下命令:
gradle --include-build ../anotherDirectory/SubProjectB run
SubProjectB
将首先构建,然后是SubProjectA
。
关于eclipse - 从未知根目录的子项目运行gradle任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763360/