├── .gitignore ├── .idea ├── caches │ └── build_file_checksums.ser ├── codeStyles │ └── Project.xml ├── gradle.xml ├── misc.xml └── runConfigurations.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── app │ │ └── clean │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── app │ │ │ └── clean │ │ │ ├── MainActivity.kt │ │ │ ├── base │ │ │ ├── BaseMVPActivity.java │ │ │ ├── BasePresenter.java │ │ │ ├── CPBridge.java │ │ │ ├── IPresenter.java │ │ │ └── IView.java │ │ │ ├── presenter │ │ │ └── ArticlePresenter.java │ │ │ └── view │ │ │ ├── ArticleActivity.java │ │ │ └── ArticleView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_article.xml │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── app │ └── clean │ └── ExampleUnitTest.kt ├── config.gradle ├── data ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── app │ │ └── clean │ │ └── data │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── app │ │ │ └── clean │ │ │ └── data │ │ │ ├── JDHttp.java │ │ │ ├── JDTransformer.java │ │ │ ├── api │ │ │ └── ArticleApi.java │ │ │ └── repository │ │ │ └── ArticleRepositoryImpl.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── app │ └── clean │ └── data │ └── ExampleUnitTest.java ├── domain ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── app │ │ └── clean │ │ └── domain │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── app │ │ │ └── clean │ │ │ └── domain │ │ │ ├── bean │ │ │ ├── ArticleBean.java │ │ │ ├── BaseResponse.java │ │ │ └── ResponseData.java │ │ │ ├── consumer │ │ │ ├── ErrorConsumer.java │ │ │ ├── ISubErrorConsumer.java │ │ │ ├── ISubNextConsumer.java │ │ │ └── NextConsumer.java │ │ │ ├── interactor │ │ │ ├── ArticleCase.java │ │ │ └── UseCase.java │ │ │ ├── observer │ │ │ └── BaseObserver.java │ │ │ └── repository │ │ │ └── ArticleRepository.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── app │ └── clean │ └── domain │ └── ExampleUnitTest.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.gitignore -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.idea/codeStyles/Project.xml -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.idea/gradle.xml -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.idea/misc.xml -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/.idea/runConfigurations.xml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/README.md -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/build.gradle -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/androidTest/java/com/app/clean/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/androidTest/java/com/app/clean/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/MainActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/MainActivity.kt -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/base/BaseMVPActivity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/base/BaseMVPActivity.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/base/BasePresenter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/base/BasePresenter.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/base/CPBridge.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/base/CPBridge.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/base/IPresenter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/base/IPresenter.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/base/IView.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/base/IView.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/presenter/ArticlePresenter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/presenter/ArticlePresenter.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/view/ArticleActivity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/view/ArticleActivity.java -------------------------------------------------------------------------------- /app/src/main/java/com/app/clean/view/ArticleView.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/java/com/app/clean/view/ArticleView.java -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/drawable-v24/ic_launcher_foreground.xml -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/drawable/ic_launcher_background.xml -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_article.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/layout/activity_article.xml -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/layout/activity_main.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/values/colors.xml -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/main/res/values/styles.xml -------------------------------------------------------------------------------- /app/src/test/java/com/app/clean/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/app/src/test/java/com/app/clean/ExampleUnitTest.kt -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/config.gradle -------------------------------------------------------------------------------- /data/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /data/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/build.gradle -------------------------------------------------------------------------------- /data/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/proguard-rules.pro -------------------------------------------------------------------------------- /data/src/androidTest/java/com/app/clean/data/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/androidTest/java/com/app/clean/data/ExampleInstrumentedTest.java -------------------------------------------------------------------------------- /data/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /data/src/main/java/com/app/clean/data/JDHttp.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/java/com/app/clean/data/JDHttp.java -------------------------------------------------------------------------------- /data/src/main/java/com/app/clean/data/JDTransformer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/java/com/app/clean/data/JDTransformer.java -------------------------------------------------------------------------------- /data/src/main/java/com/app/clean/data/api/ArticleApi.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/java/com/app/clean/data/api/ArticleApi.java -------------------------------------------------------------------------------- /data/src/main/java/com/app/clean/data/repository/ArticleRepositoryImpl.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/java/com/app/clean/data/repository/ArticleRepositoryImpl.java -------------------------------------------------------------------------------- /data/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /data/src/test/java/com/app/clean/data/ExampleUnitTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/data/src/test/java/com/app/clean/data/ExampleUnitTest.java -------------------------------------------------------------------------------- /domain/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /domain/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/build.gradle -------------------------------------------------------------------------------- /domain/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/proguard-rules.pro -------------------------------------------------------------------------------- /domain/src/androidTest/java/com/app/clean/domain/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/androidTest/java/com/app/clean/domain/ExampleInstrumentedTest.java -------------------------------------------------------------------------------- /domain/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/bean/ArticleBean.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/bean/ArticleBean.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/bean/BaseResponse.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/bean/BaseResponse.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/bean/ResponseData.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/bean/ResponseData.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/consumer/ErrorConsumer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/consumer/ErrorConsumer.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/consumer/ISubErrorConsumer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/consumer/ISubErrorConsumer.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/consumer/ISubNextConsumer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/consumer/ISubNextConsumer.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/consumer/NextConsumer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/consumer/NextConsumer.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/interactor/ArticleCase.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/interactor/ArticleCase.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/interactor/UseCase.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/interactor/UseCase.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/observer/BaseObserver.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/observer/BaseObserver.java -------------------------------------------------------------------------------- /domain/src/main/java/com/app/clean/domain/repository/ArticleRepository.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/java/com/app/clean/domain/repository/ArticleRepository.java -------------------------------------------------------------------------------- /domain/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /domain/src/test/java/com/app/clean/domain/ExampleUnitTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/domain/src/test/java/com/app/clean/domain/ExampleUnitTest.java -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/gradlew.bat -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JD-CP/MVP-Clean-Demo/HEAD/settings.gradle --------------------------------------------------------------------------------