diff --git a/build.gradle b/build.gradle index 4e69ee78..67437cd3 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { truth: 'com.google.truth:truth:0.36', robolectric: 'org.robolectric:robolectric:2.4', compiletesting: 'com.google.testing.compile:compile-testing:0.12', - spotless: 'com.diffplug.spotless:spotless-plugin-gradle:3.6.0', + spotless: 'com.diffplug.spotless:spotless-plugin-gradle:4.5.1', ] repositories { @@ -48,10 +48,10 @@ subprojects { apply plugin: "com.diffplug.gradle.spotless" - def checkSubTask = project.tasks.findByName('check') - if(checkSubTask) { - tasks['check'].dependsOn checkSubTask - } +// def checkSubTask = project.tasks.findByName('check') +// if(checkSubTask) { +// tasks['check'].dependsOn checkSubTask +// } def installSubTask = project.tasks.findByName('install') if(installSubTask) { tasks['install'].dependsOn installSubTask diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b9774259..94336fca 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0589484f..be52383e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Dec 06 17:59:39 PST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip diff --git a/gradlew.bat b/gradlew.bat index f9553162..e95643d6 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/henson-plugin/src/main/java/dart/henson/plugin/internal/GenerateHensonNavigatorTask.java b/henson-plugin/src/main/java/dart/henson/plugin/internal/GenerateHensonNavigatorTask.java index 333449f6..1c6f31ad 100644 --- a/henson-plugin/src/main/java/dart/henson/plugin/internal/GenerateHensonNavigatorTask.java +++ b/henson-plugin/src/main/java/dart/henson/plugin/internal/GenerateHensonNavigatorTask.java @@ -17,11 +17,8 @@ package dart.henson.plugin.internal; -import static com.android.build.gradle.internal.publishing.AndroidArtifacts.ARTIFACT_TYPE; import static java.util.Collections.singletonList; -import com.android.build.gradle.api.BaseVariant; -import com.android.build.gradle.internal.publishing.AndroidArtifacts; import com.google.common.collect.Streams; import dart.henson.plugin.generator.HensonNavigatorGenerator; import java.io.File; @@ -34,45 +31,29 @@ import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import org.gradle.api.Action; + import org.gradle.api.DefaultTask; -import org.gradle.api.Project; -import org.gradle.api.attributes.AttributeContainer; + import org.gradle.api.file.FileCollection; -import org.gradle.api.internal.file.UnionFileCollection; + import org.gradle.api.logging.Logger; import org.gradle.api.tasks.CacheableTask; + import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; + import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.compile.JavaCompile; + @CacheableTask public class GenerateHensonNavigatorTask extends DefaultTask { @InputFiles @Classpath FileCollection getJarDependencies() { - //Thanks to Xavier Durcrohet for this - //https://android.googlesource.com/platform/tools/base/+/gradle_3.0.0/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/scope/VariantScopeImpl.java#1037 - Action attributes = - container -> - container.attribute(ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES.getType()); - boolean lenientMode = false; - return variant - .getCompileConfiguration() - .getIncoming() - .artifactView( - config -> { - config.attributes(attributes); - config.lenient(lenientMode); - }) - .getArtifacts() - .getArtifactFiles(); + return jarDependencies; } - @Input String hensonNavigatorPackageName; File destinationFolder; @@ -85,22 +66,19 @@ public File getHensonNavigatorSourceFile() { return new File(generatedFolder, "HensonNavigator.java"); } - BaseVariant variant; - Project project; + + FileCollection jarDependencies; Logger logger; + HensonNavigatorGenerator hensonNavigatorGenerator; @TaskAction public void generateHensonNavigator() { - TaskProvider javaCompiler = variant.getJavaCompileProvider(); FileCollection variantCompileClasspath = getJarDependencies(); - FileCollection uft = - new UnionFileCollection( - javaCompiler.get().getSource(), project.fileTree(destinationFolder)); - javaCompiler.get().setSource(uft); - logger.debug("Analyzing configuration: " + variantCompileClasspath.getFiles()); + + logger.debug("Analyzing configuration: " + jarDependencies.getFiles()); Set targetActivities = new HashSet<>(); - Streams.stream(variantCompileClasspath) + Streams.stream(jarDependencies) .forEach( dependency -> { logger.debug("Detected dependency: {}", dependency.getAbsolutePath()); diff --git a/henson-plugin/src/main/java/dart/henson/plugin/internal/TaskManager.java b/henson-plugin/src/main/java/dart/henson/plugin/internal/TaskManager.java index 06cff4ee..d74f29fe 100644 --- a/henson-plugin/src/main/java/dart/henson/plugin/internal/TaskManager.java +++ b/henson-plugin/src/main/java/dart/henson/plugin/internal/TaskManager.java @@ -17,15 +17,25 @@ package dart.henson.plugin.internal; +import static com.android.build.gradle.internal.publishing.AndroidArtifacts.ARTIFACT_TYPE; import static dart.henson.plugin.util.StringUtil.capitalize; import com.android.build.gradle.api.BaseVariant; +import com.android.build.gradle.internal.publishing.AndroidArtifacts; + import dart.henson.plugin.generator.HensonNavigatorGenerator; + import java.io.File; + import org.gradle.api.Action; import org.gradle.api.Project; +import org.gradle.api.attributes.AttributeContainer; +import org.gradle.api.file.FileCollection; +import org.gradle.api.internal.file.FileCollectionInternal; +import org.gradle.api.internal.file.UnionFileCollection; import org.gradle.api.logging.Logger; import org.gradle.api.tasks.TaskProvider; +import org.gradle.api.tasks.compile.JavaCompile; public class TaskManager { @@ -57,6 +67,19 @@ public TaskManager(Project project, Logger logger) { */ public TaskProvider createHensonNavigatorGenerationTask( BaseVariant variant, String hensonNavigatorPackageName, File destinationFolder) { + Action attributes = + container -> + container.attribute(ARTIFACT_TYPE, AndroidArtifacts.ArtifactType.CLASSES.getType()); + + + TaskProvider javaCompiler = variant.getJavaCompileProvider(); + + FileCollection uft = + new UnionFileCollection( + (FileCollectionInternal) javaCompiler.get().getSource(), (FileCollectionInternal) project.fileTree(destinationFolder)); + + javaCompiler.get().setSource(uft); + TaskProvider generateHensonNavigatorTask = project .getTasks() @@ -67,10 +90,18 @@ public TaskProvider createHensonNavigatorGeneration generateHensonNavigatorTask1 -> { generateHensonNavigatorTask1.hensonNavigatorPackageName = hensonNavigatorPackageName; + generateHensonNavigatorTask1.jarDependencies = variant + .getCompileConfiguration() + .getIncoming() + .artifactView( + config -> { + config.attributes(attributes); + config.lenient(false); + }) + .getArtifacts() + .getArtifactFiles(); generateHensonNavigatorTask1.destinationFolder = destinationFolder; - generateHensonNavigatorTask1.variant = variant; generateHensonNavigatorTask1.logger = logger; - generateHensonNavigatorTask1.project = project; generateHensonNavigatorTask1.hensonNavigatorGenerator = hensonNavigatorGenerator; });