Java 在';项目';和';外部';依赖关系
我有一小套库和应用程序:Java 在';项目';和';外部';依赖关系,java,android,maven,gradle,Java,Android,Maven,Gradle,我有一小套库和应用程序: forge base-java项目(Intellij IDEA项目) forge-android-android库项目,依赖于forge-base(作为项目) forge-android-skeleton-示例android应用程序,取决于forge-android(作为项目) 在初始开发过程中,我将结构与项目依赖项一起使用,如: settings.gradle: ... include ':forge-base' project(':forge-base').p
-java项目(Intellij IDEA项目)forge base
-android库项目,依赖于forge-android
(作为项目)forge-base
-示例android应用程序,取决于forge-android-skeleton
(作为项目)forge-android
...
include ':forge-base'
project(':forge-base').projectDir=new File("$settingsDir/../forge/base")
...
然后在build.gradle中:
compile project(':forge-base')
compile 'com.bolyartech.forge:forge-base:2.0-SNAPSHOT'
这很有魅力,但后来我需要在maven repo上发布LIB,依赖项必须更改如下:
build.gradle:
compile project(':forge-base')
compile 'com.bolyartech.forge:forge-base:2.0-SNAPSHOT'
我现在面临的问题是,我正试图在所有3个项目中进行一些重大重构,我需要旧的deps结构,以便轻松确认项目的一致性,例如,只构建框架应用程序,所有递归重新编译/构建都将自动进行(与使用编译项目(“:forge base”)引用库项目时一样。
)。如果我使用“新”结构发布到(本地)maven,我每次都必须发布库(增量版本),我会更改库中的某些内容,以便其他两个项目可以看到这些更改
处理这种情况的通常/规范原因是什么
有没有一种简单的方法可以在两种“模式”之间切换,例如“内部”/“外部”依赖项?事实证明,这很容易做到。您可以对不同的构建类型使用不同的依赖项,即调试/发布,因此,例如,对于我的forge android skeleton
项目,现在我有以下内容:
在设置.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")
...
releaseCompile ('com.bolyartech.forge:forge-android:2.7-SNAPSHOT')
debugCompile project(':forge-android')
...
在app/build.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")
...
releaseCompile ('com.bolyartech.forge:forge-android:2.7-SNAPSHOT')
debugCompile project(':forge-android')
...
请注意,在settings.gradle
中,您需要将所有依赖项放回底部,否则它将不起作用(这就是forge base
在此处定义的原因,即使未被合理使用)
您还可以定义另一种构建类型,如directdeps
,并在您不想干扰调试/发布类型的情况下使用它
请注意,如果您对某些项目使用不同的IDE(如我的IDEA和AS),最好确保两者使用相同(版本)的gradle,否则可能会出现意外问题。不知道规范方式,但您始终可以根据标志值有条件地添加依赖项。