Jea*_*ôté 5 java module gradle build.gradle
我已经修改了我的项目以成为多平台.
以前的状态:
只有一个模块(项目)与一个build.gradle.所有测试都在测试文件夹中,当我运行时,我的gradlew testDebug所有500个测试都在运行.
新州: 我有一个主要的gradle项目,除了持有3个模块之外什么都不做
每个模块都有自己的gradle文件,但只能构建android和rasberryPi模块.在它们的依赖项中(在它们各自的build.gradle文件中),它们针对"核心"模块进行编译.像这样:
dependencies {
compile project(':clapcore')
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android:android:4.1.1.4'
}
Run Code Online (Sandbox Code Playgroud)
我所有的500项测试现在都在核心.因此,当我gradlew clean assembleDebug testDebug在Android模块上执行时,未检测到任何测试,并且test-result的文件夹为空.
我试图testDebug直接在核心模块上运行命令,但由于它不是自己构建的,我收到错误:
FAILURE: Build failed with an exception.
* What went wrong:
Task 'testDebug' not found in project ':core'.
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:有没有办法,在gradle中,告诉"testDebug"命令运行其模块依赖(核心)中的所有测试?
我也尝试在android模块的依赖项中添加一个testCompile,但它不起作用,如下所示:
dependencies {
compile project(':clapcore')
testCompile project(':clapcore')
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android:android:4.1.1.4'
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑
我发现我可以gradlew build在核心上执行命令,它将在'核心'模块中运行测试.但是如果有可能的话,我想通过"级联"运行这些测试.
*编辑2*
我发现我可以gradlew buildNeeded在'android'模块上执行命令,它将为android模块和核心进行构建.不幸的是,它只是在发布!如果有人可以指出我使用此功能的方法,但在调试中,这将是惊人的.我在调试中需要它,因为发布版本启动了更多的任务,如更改版本,提交git,推送等等......这仅适用于每晚构建,因此需要进行调试.
在阅读了 Gradle 网站的文档后,我发现这个非常好的函数buildNeeded只是运行所有的 buildType 并且你无法更改。唯一可以让您选择构建类型的函数分别是assembleDebug和assembleRelease。
由于我的发布过程(创建标签、更新版本、推送到 git 等)是在 后立即运行的assembleRelease,所以我陷入了困境,因为buildNeeded在夜间构建中运行会触发发布过程。
因此,我修改了 build.gradle 文件来创建一个名为releaseVersionwhich dependentOn的任务zipalignRelease。因此,当我真的想创建一个版本时,我会调用releaseVersion,但是当我只想在夜间构建中构建/测试时,我会调用buildNeededcommand.
注意事项:测试结果将位于每个模块的每个“build”文件夹中。如果您使用 CI,请务必小心清洁所有模块。
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |