gpt4 book ai didi

java - 在 'project' 和 'external' 依赖项之间切换的正确 Gradle 项目结构是什么

转载 作者:太空狗 更新时间:2023-10-29 14:01:03 24 4
gpt4 key购买 nike

我有这一小组库和应用程序:

  • forge-base - java项目(Intellij IDEA项目)
  • forge-android - android 库项目,取决于 forge-base (作为项目)
  • forge-android-skeleton - 示例 android 应用程序,取决于 forge-android (作为项目)

在最初的开发过程中,我使用了具有项目依赖关系的结构,例如:

设置.gradle:

...

include ':forge-base'
project(':forge-base').projectDir=new File("$settingsDir/../forge/base")

...

然后在build.gradle中:

compile project(':forge-base')

这很有效,但后来我需要在 maven 存储库上发布库,并且依赖项必须更改如下:

build.gradle:

compile 'com.bolyartech.forge:forge-base:2.0-SNAPSHOT'

我现在面临的问题是我正在尝试对所有 3 个项目进行一些重大重构,并且我需要旧的 deps 结构以便轻松确认项目的一致性,例如只构建 skeleton应用程序和所有递归重新编译/构建自动进行(就像用 compile project(':forge-base') 引用 lib 项目时一样)。如果我使用"new"结构发布到(本地)maven,我必须每次发布 lib(使用增量版本)我更改其中的一些内容以便其他两个项目可以看到更改。

处理这种情况的通常/规范原因是什么?

有没有一种简单的方法可以在两种“模式”之间切换,例如“内部”/“外部”依赖项?

最佳答案

事实证明,这很容易做到。您可以为不同的构建类型使用不同的依赖项,即调试/发布,例如对于我的 forge-android-skeleton 项目,现在我有以下内容:

settings.gradle 中:

include ':app'

include ':forge-base' project(':forge-base').projectDir=new
File("$settingsDir/../../../forge/base")

include ':forge-android' project(':forge-android').projectDir=new
File("$settingsDir/../../../forge-android/forge-android")

app/build.gradle 中:

...
releaseCompile ('com.bolyartech.forge:forge-android:2.7-SNAPSHOT')

debugCompile project(':forge-android')
...

请注意,在 settings.gradle 中,您需要将所有依赖项都放回底部,否则它将无法工作(这就是 forge-base 是在那里定义甚至没有明确使用)。

您还可以定义另一种构建类型,如 direct-deps 并在您不喜欢弄乱调试/发布类型的情况下使用它。

请注意,如果您对某些项目使用不同的 IDE(例如我的 IDEA 和 AS),最好确保两者都使用相同(版本)的 gradle,否则可能会出现意外问题.

关于java - 在 'project' 和 'external' 依赖项之间切换的正确 Gradle 项目结构是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com