当前位置: 首页 > 知识库问答 >
问题:

如何组织Spring、Android和Plain Jar的分级?

陆甫
2023-03-14
proj:spring
proj:plainjava
proj:android
proj:android:app
Execution failed for task ':android:app:compileDebugJavaWithJavac'.

为android运行单独的任务构建良好。

正如我所了解的,我需要按照以下顺序为整个构建执行以下任务:

  1. proj:PlainJava:PublishMavenJavaPublicationTomAvenLocal
  2. proj:spring:bootrepackage
  3. ???成功构建android的任务,当前显式构建在android studio中。
proj:spring:bootRepackage
include 'commonobjects', 'server', 'android', 'android:app'
task myCleanLibraries {}
myCleanLibraries.dependsOn ':commonobjects:clean'

task myPublishLibraries {}
myPublishLibraries.dependsOn ':commonobjects:publishToMavenLocal'

task myCleanRest {}
myCleanRest.dependsOn ':server:clean', ':android:app:clean'

task myBuildRest {}
myBuildRest.dependsOn ':server:build', ':android:app:assembleDebug'


task myLibraries {}
myLibraries.dependsOn 'myCleanLibraries', 'myPublishLibraries'
myPublishLibraries.mustRunAfter 'myCleanLibraries'

task myRest {}
myRest.dependsOn 'myCleanRest', 'myBuildRest'
myBuildRest.mustRunAfter 'myCleanRest'

task myAll {}
myAll.dependsOn 'myLibraries', 'myRest'
myRest.mustRunAfter 'myLibraries'
group 'com.example'
version '0.0.VERSIONNUMBER'

apply plugin: 'java'
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 = 'server'
    version = '0.0.9999'
}

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    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 'org.springframework.boot:spring-boot-starter-logging'
    compile 'org.projectlombok:lombok'
    compile 'io.jsonwebtoken:jjwt:0.7.0'
    compile 'mysql:mysql-connector-java:6.0.5'
    compile 'com.example:commonobjects:0.0.9999'
    testCompile 'org.springframework.boot:spring-boot-starter-test'
}
rootProject.name = 'commonobjects'
group 'com.example'
version '0.0.9999'

apply plugin: 'java'
apply plugin: 'maven-publish'

jar {
    baseName = 'commonobjects'
    version = '0.0.9999'
}


repositories {
    mavenCentral()
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        mavenLocal()
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    testCompile 'junit:junit:4.11'
}
include ':app'

Proj:Android Build.Gradle

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

Proj:Android:App Build.Gradle

def ANDROID_SUPPORT_DEPENDENCY_VERSION = '25.1.0'
def DAGGER_DEPENDENCY_VERSION = '2.10'
def OK_HTTP_DEPENDENCY_VERSION = '3.7.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"
        classpath "com.android.tools.build:gradle:2.3.1"
    }
}

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
}

apply plugin: "com.android.application"
apply plugin: "idea"


android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "myandroidappid"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 9999
        versionName "0.0.9999"
        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.google.code.findbugs:jsr305:3.0.1'
    androidTestCompile "com.android.support:support-annotations:${ANDROID_SUPPORT_DEPENDENCY_VERSION}"
    androidTestCompile "com.android.support.test:runner:0.5"

    // MYOSCA dependencies
     compile('com.example:commonobjects:0.0.9999')

    // 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}"
    compile "com.google.dagger:dagger-android:${DAGGER_DEPENDENCY_VERSION}"
    annotationProcessor "com.google.dagger:dagger-android-processor:${DAGGER_DEPENDENCY_VERSION}"
    compile "com.google.dagger:dagger-android-support:${DAGGER_DEPENDENCY_VERSION}"

    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}"

    // Google Guava for preconditions
    compile 'com.google.guava:guava:20.0'
}

共有1个答案

殷浩慨
2023-03-14

完整解决方案可在以下站点获得:repo

感谢您发布build.gradle文件。我相信你的设置.梯度是你应该开始的地方。

由于您希望/在当前设置中包含这些模块:

proj:spring
proj:plainjava
proj:android
proj:android:app
proj/
  |-spring/
     |-build.gradle
  |-plain-java/        <-- better naming conventions by separating names
     |-build.gradle
  |-android/
     |-build.gradle
  |-build.gradle       <-- make sure to have root build.gradle
  |-settings.gradle    <-- should be root folder(proj)
    null
rootProject.name = "proj"

include ":spring"
include ":plain-java"
include ":android"
 类似资料:
  • 我正在尝试设置自己的ca服务器和客户端。在用admin初始化ca服务器之后,我用ca client enroll cli命令注册了它。然后我想在系统中添加另一个组织。我更改了结构ca服务器配置。yml文件附属部分然后重新启动服务器,然后尝试使用ca客户端向该组织注册新用户。但它失败了,出现了“未找到关联”错误。所以我想知道这个问题。在使用admin user初始化服务器之后,其他用户和组织是否应该

  • 我在以可管理的方式组织构建时遇到了问题。在我的gradle构建中有大量的任务,因为对于每个特定的工作元素,gradle都需要一个这种类型的任务。例如:复制一个文件分级需要复制任务类型,压缩一个文件分级需要压缩任务类型,删除几个文件分级需要删除任务类型。Javadoc、Jar、Ear等也需要它们的任务类型。最终,build有大量的任务,要以特定的顺序运行所有这些任务,我必须使用 将这些规则应用于所有

  • 到目前为止,我真的很喜欢Vertx。文档很棒,跨语言支持也很棒。 然而,我的特定问题的示例和留档似乎都已经过时了。我猜自以来,API已经发生了一些变化(我目前正在使用和Scala。 我希望能够在多个文件中分割我的路线,以保持事情的有序性。例如,我希望有一个用户路由文件,并为TodoRoutes创建一个单独的文件,这两个文件都可以在我的ServerVerticle中使用。 我发现的唯一方法基本上是:

  • 下面是几种常见的Spring工具的类型 : – 静态工具方法类 通常以作为类名后缀 类的成员函数定义为 一般不通过创建类实例方式使用,而是通过直接被使用 一般完全无状态,(即使有状态,也一般是维护类静态成员属性static member field ) 工具方法命名通常可以"望文知意",可以知道其目的 – "某某"配置器 – "某某"增强器 – "某某"加载器 – "某某"后置处理器 – "某某"

  • 问题内容: 我目前正在替换匿名的ActionListeners 带有代表动作的类文件: 但是,我的GUI可以执行很多操作(例如CreatePersonAction,RenamePersonAction,DeletePersonAction,SwapPeopleAction等)。 是否有一种很好的方法可以将这些类组织成某种连贯的结构? 问题答案: 您可以将操作保存在单独的程序包中以隔离它们。有时,将

  • 经常会有短暂的组织混乱,比如解雇,收购,IPO,新雇佣,等等。对每个人来说这都是令人不安的,但可能对于那些将自尊建立在能力而非位置上的程序员来讲,这种不安不会那么严重。组织混乱对程序员来讲是锻炼他们的魔力的好机会。因为这是一个集体秘密,在最后我会有所保留。如果你不是一个程序员,就不要再读下去了。 工程师有能力创造与维持。 非工程师可以安排人们,但,在典型的软件公司,如果没有程序员的话,他们不能创造