2017-02-20 15 views
0

のための異なるタスクを呼び出す:Gradleのは、私は次のように設定している各サブプロジェクト

プロジェクト

  • 春ブーツアプリのjar
  • アンドロイドプロジェクト
      にパッケージ化されている
    • Javaクラス
    • アンドロイドプロジェクトのアプリモジュール

私はrunnable spring boot jarアプリケーション、ローカルMavenリポジトリにインストールされているjava jarライブラリ、androidのapkファイルを取得するようにgradle buildを設定しようとしています。

  • 私はcompileJaveタスクに

質問を実行する必要が春の実行ファイルを取得するにはタスク

  • を公開私は実行する必要があるのjava ibraryを公開するにはassembleDebugタスク
  • を実行する必要がAPKファイルを取得するには別のタスクを達成するために、トップレベルのroot gradel.buildファイルで実行するタスクは何ですか?

    ルートのGradle:

    allprojects { 
        task hello << { task -> println "I'm $task.project.name" } 
    } 
    subprojects { 
        repositories { 
         mavenCentral() 
         jcenter() 
        } 
    } 
    

    春ブーツのGradle:

    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'org.springframework.boot' 
    
    defaultTasks 'clean', 'build' 
    
    buildscript { 
        ext { 
          springBootVersion = '1.5.1.RELEASE' 
         } 
         repositories { 
          mavenCentral() 
         } 
        dependencies { 
         classpath("org.springframework.boot:spring-boot-gradle-   plugin:${springBootVersion}") 
        } 
    } 
    
    jar { 
        baseName = 'demo' 
        version = '0.0.1-SNAPSHOT' 
    } 
    
    sourceCompatibility = 1.8 
    
    repositories { 
        mavenCentral() 
    } 
    
    dependencies { 
        compile('org.springframework.boot:spring-boot-starter-security') 
        compile('org.springframework.boot:spring-boot-starter-web') 
        compile('org.springframework.boot:spring-boot-starter-data-jpa') 
        compile('io.jsonwebtoken:jjwt:0.7.0') 
        compile('mysql:mysql-connector-java:6.0.5') 
    
        testCompile('org.springframework.boot:spring-boot-starter-test') 
    } 
    

    JavaのメニュープロジェクトのGradle:

    jar { 
        baseName = 'commonobjects' 
        version = "0.0.1-SNAPSHOT" 
    } 
    
    sourceCompatibility = 1.8 
    targetCompatibility = 1.8 
    
    dependencies { 
        testCompile group: 'junit', name: 'junit', version: '4.11' 
    } 
    

    AndroidのメニュープロジェクトのGradle:

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

    のAndroidアプリケーションのGradle:

    def ANDROID_SUPPORT_DEPENDENCY_VERSION = '25.1.0' 
    def DAGGER_DEPENDENCY_VERSION = '2.8' 
    def OK_HTTP_DEPENDENCY_VERSION = '3.5.0' 
    def RETROFIT_DEPENDENCY_VERSION = '2.1.0' 
    def RETROFIT_JACKSON_DEPENDENCY_VERSION = '2.1.0' 
    def BUTTER_KNIFE_DEPENDENCY_VERSION = '8.5.1' 
    def JAVAX_ANNOTATION_JSR250_API_DEPENDENCY_VERSION = '1.0' 
    def GREEN_ROBOT_EVENT_BUS_DEPENDENCY_VERSION = '3.0.0' 
    def RX_JAVA_DEPENDENCY_VERSION = '2.0.5' 
    def RX_ANDROID_JAVA_DEPENDENCY_VERSION = '2.0.1' 
    
    defaultTasks 'clean', 'assembleDebug' 
    
    buildscript { 
        repositories { 
         mavenCentral() 
         jcenter() 
         maven { 
          url "https://plugins.gradle.org/m2/" 
         } 
        } 
        dependencies { 
         classpath "net.ltgt.gradle:gradle-apt-plugin:0.9" 
        } 
    } 
    
    repositories { 
        jcenter() 
        mavenCentral() 
    } 
    
    apply plugin: "com.android.application" 
    apply plugin: 'idea' 
    
    
    android { 
        compileSdkVersion 25 
        buildToolsVersion "25.0.1" 
    
        defaultConfig { 
         applicationId "..." 
         minSdkVersion 14 
         targetSdkVersion 25 
         versionCode 1 
         versionName "1.0" 
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
        } 
        buildTypes { 
    
    //  debug { 
    //   buildConfigField "String", "PARSE_APPLICATION_ID", "\"1\"" 
    //   buildConfigField "String", "PARSE_API_KEY", "\"1\"" 
    //  } 
    
         release { 
          minifyEnabled true 
          proguardFiles "android-proguard-android.txt", "proguard-rules.txt" 
    
          // buildConfigField "String", "PARSE_APPLICATION_ID", "\"1\"" 
          // buildConfigField "String", "PARSE_API_KEY", "\"1\"" 
         } 
        } 
    
        packagingOptions { 
         pickFirst 'META-INF/LICENSE' 
        } 
    } 
    
    dependencies { 
        // Add jars supplied 
        compile fileTree(dir: 'libs', include: ['*.jar']) 
    
        // Test related 
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
         exclude group: 'com.android.support', module: 'support-annotations' 
        }) 
        testCompile 'junit:junit:4.12' 
    
        androidTestCompile "com.android.support:support-annotations:${ANDROID_SUPPORT_DEPENDENCY_VERSION}" 
        androidTestCompile "com.android.support.test:runner:0.5" 
    
        // Android support libraries 
        compile "com.android.support:appcompat-v7:${ANDROID_SUPPORT_DEPENDENCY_VERSION}" 
        compile "com.android.support:design:${ANDROID_SUPPORT_DEPENDENCY_VERSION}" 
        compile "com.android.support:support-annotations:${ANDROID_SUPPORT_DEPENDENCY_VERSION}" 
    
        // An HTTP & HTTP/2 client for Android and Java applications 
        compile "com.squareup.okhttp3:okhttp:${OK_HTTP_DEPENDENCY_VERSION}" 
    
        // Retrofit: A type-safe HTTP client for Android and Java 
        compile "com.squareup.retrofit2:retrofit:${RETROFIT_DEPENDENCY_VERSION}" 
        compile "com.squareup.retrofit2:converter-jackson:${RETROFIT_JACKSON_DEPENDENCY_VERSION}" 
    
        // Butterknife: Field and method binding for Android views 
        compile "com.jakewharton:butterknife:${BUTTER_KNIFE_DEPENDENCY_VERSION}" 
        annotationProcessor "com.jakewharton:butterknife-compiler:${BUTTER_KNIFE_DEPENDENCY_VERSION}" 
    
        // Dagger DI 
        compile "com.google.dagger:dagger:${DAGGER_DEPENDENCY_VERSION}" 
        annotationProcessor "com.google.dagger:dagger-compiler:${DAGGER_DEPENDENCY_VERSION}" 
        provided "javax.annotation:jsr250-api:${JAVAX_ANNOTATION_JSR250_API_DEPENDENCY_VERSION}" 
    
        // Event bus 
        compile "org.greenrobot:eventbus:${GREEN_ROBOT_EVENT_BUS_DEPENDENCY_VERSION}" 
    
        // RxJava a library for composing asynchronous and event-based programs by using observable sequences. 
        compile "io.reactivex.rxjava2:rxjava:${RX_JAVA_DEPENDENCY_VERSION}" 
        compile "io.reactivex.rxjava2:rxandroid:${RX_ANDROID_JAVA_DEPENDENCY_VERSION}" 
    } 
    
  • 答えて

    1

    あなたは単に三つの異なるタスクに依存します、あなたのタスクを作成することができます。それだけでなく、サブプロジェクト間で依存関係を持つことが可能です:

    task myAllTask { 
    } 
    
    myAllTask.dependsOn assembleDebug, publish, compileJava 
    

    サブプロジェクトからのタスクを実行している場合:

    myAllTask.dependsOn ':bootProj:assembleDebug', ':javaProj:publish', ':androidProj:compileJava 
    
    +0

    だから私はちょうどルートフォルダにGradleのmyAllTask​​を実行することができます。そしてbuild.gradleはどんなコードを正確にcontaingしますか?そして、別のことは、順序が重要であるということです。javaProjを最初に公開する必要があります。これは、サーバーとAndroidアプリの両方に依存するためです。 @ sm4 –

    +0

    あなたの質問にもっと具体的になるようにしよう。どのようにあなたのgradleファイルが整理されてドラフト。ルートグラデルにはタスク{}が含まれ、次にdependsOnが含まれます。また、依存関係ブロックで最初に実行する必要のあるサブプロジェクトに依存する必要があります。 – sm4

    +0

    私は現在のソースを追加しました。私はgradleで間違ったことをしているかもしれないので、私の質問は本当に賃金です。しかし、目的はすべてのモジュールからすべての成果物を生成し、それをさらにアップロード、展開などに使用することです。私はアンドロイドプロジェクトがアンドロイドモジュールを主なアンドロイドモジュールとしてアプリを持つ代わりにラップする必要があることを理解していません。 @ sm4 –

    関連する問題