Gradle 如果我们有回购本地导入它,否则通过maven下载
我正在尝试更新gradle脚本,以查看是否有回购协议的本地实例。否则请下载。本质上,我们开发人员不希望在本地处理共享回购协议时推到maven。然而,作为部署管道的一部分,我们的工具将需要拉动它。我们并不太担心回购协议变得过时。然而,我不知道如何写这句话 目前的解决方案是总是取消回购协议。同样,我们的目标是拥有更多的控制权,而不需要与我们的回购同步Gradle 如果我们有回购本地导入它,否则通过maven下载,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我正在尝试更新gradle脚本,以查看是否有回购协议的本地实例。否则请下载。本质上,我们开发人员不希望在本地处理共享回购协议时推到maven。然而,作为部署管道的一部分,我们的工具将需要拉动它。我们并不太担心回购协议变得过时。然而,我不知道如何写这句话 目前的解决方案是总是取消回购协议。同样,我们的目标是拥有更多的控制权,而不需要与我们的回购同步 configurations.all { // check for updates every build resolutionStr
configurations.all {
// check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
compile ('com.aaaa.commons:1.2.3') { changing=true }
渴望
if(path/to/project exists){
import the local dependency
}
else{
compile ('com.aaaa.commons:1.2.3') { changing=true }
}
编辑
问题是需要将其作为模块导入。这基本上就是在我的应用程序中处理它。这正是我不想要的。如果我做一个
include ':commons'
project(':commons').projectDir = new File(rootProject.projectDir,
'/Users/asdasd/Repos/android-commons')
我们得到
Error:Project :app declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :commons.
编辑
我需要在文件树中再选择一个。。我选择了我的库根目录。我需要的是commons而不是android commons
mymainproject
android-commons
android-commons.iml
build
build.gradle
**commons**
从那以后,直到我像这样编译它,我才能够真正使用这个库(注意,我正在进行调试,因为发行版总是会拉它)
我经常使用一种简单的方法:
try {
compile project(':my-project')
} catch (UnknownProjectException) {
compile 'com.aaaa.ooooo:1.2.3'
}
但是,我不确定使用解决方案策略是否有更好的解决方案。一个缺点是:如果可以找到另一个项目,则在将项目发布到存储库时不会将其作为依赖项添加
可能有必要在setting.gradle
文件中添加项目包含条件,如下所示:
if (new File(rootDir, 'my-project').isDirectory()) {
include ':my-project'
}
非常有趣。尽管主要问题是,如果我尝试在我的顶级设置.gradle中添加包含“:commons”的模块,它将在应用程序中创建一个同名的空目录。我正在app/build中尝试你的代码。gradle在我的答案中添加了一个在settings.gradle
中包含条件项目的示例。
if (new File(rootDir, 'my-project').isDirectory()) {
include ':my-project'
}