Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在';项目';和';外部';依赖关系_Java_Android_Maven_Gradle - Fatal编程技术网

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

我有一小套库和应用程序:

  • forge base
    -java项目(Intellij IDEA项目)
  • forge-android
    -android库项目,依赖于
    forge-base
    (作为项目)
  • forge-android-skeleton
    -示例android应用程序,取决于
    forge-android
    (作为项目)
在初始开发过程中,我将结构与项目依赖项一起使用,如:

settings.gradle:

...

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,否则可能会出现意外问题。

不知道规范方式,但您始终可以根据标志值有条件地添加依赖项。