2017-02-19 137 views
1

我有一個包含服務器和android應用程序的項目,該服務器是基於java的。我想爲服務器和android應用程序可以使用的常見java代碼創建一個gradle模塊,我創建了通用模塊作爲gradle java模塊,並且似乎可以將該模塊作爲服務器和Android應用程序。 我的問題是,雖然gradle構建成功,但intellij無法從android應用程序中的java模塊中找到依賴項。 有什麼方法可以做我正在嘗試的,或者intellij只是不支持它?如何從android應用程序和java應用程序導入gradle java模塊

回答

0

如果您有以下配置組成的appservercommon模塊:

project/ 
├── app/ 
│ ├── build.gradle 
│ └── src 
├── server/ 
│ ├── build.gradle 
│ └── src 
├── common/ 
│ ├── build.gradle 
│ └── src 
├── build.gradle 
└── settings.gradle 

settings.gradle包含模塊列表:

include ':app',':server',':common' 

如果您有模塊之間的多個子目錄,如:

project/ 
├── server/ 
│ ├── subfolder 
     ├── build.gradle 

settings.gradle會是什麼樣子:

include ':app',':server',':common' 
project(':server').projectDir = new File('subfolder/server') 

頂級build.gradle包括在classpath com.android.tools.build:gradle:X.X.XX

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

您的應用程序build.gradlecom.android.application插件與依賴你servercommon模塊。這是app模塊的build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "com.example.test" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':server') 
    compile project(':common') 
} 

servercommon模塊可以在Android項目中使用,以及在Java項目(在的IntelliJ-主意)的Java模塊與java插件。這是servercommon模塊的build.gradle

apply plugin: 'java' 

dependencies { 
    //for server module common module dependency : 
    //compile project(':common') 
} 

task sourcesJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

compileJava { 
    sourceCompatibility = "1.7" 
    targetCompatibility = "1.7" 
    options.encoding = 'UTF-8' 
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
} 
+0

感謝,這是我在做什麼,但具有的IntelliJ一個問題,這個設置並沒有找到「共同」類 – jacob