• 加速 gradle 打包速度 !!


    如果执行 gradle clean build --info,  输出是: 

      Looking for a different daemon...
    Found daemon DaemonInfo{pid=19048, address=[5dc61bb0-e70a-41ff-855e-61754ab113ee port:50734, addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]], state=Idle, lastBusy=1660637008687, context=DefaultDaemonContext[uid=bdd601a4-019a-4843-a0b7-436
    e3c1a90d3,javaHome=C:\Program Files\Java\jdk-14.0.1,daemonRegistryDir=C:\Users\xd\.gradle\daemon,pid=19048,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=127.0.0.1:50728,--add-opens,java.base/java.util=ALL-UNNAMED,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=CN,-Duser.language=zh,-Duser.variant]} however its context does not match the desired criteria.
    Java home is different.
    Wanted: DefaultDaemonContext[uid=null,javaHome=C:\Java\jdk1.8.0_202,daemonRegistryDir=C:\Users\xd\.gradle\daemon,pid=16004,idleTimeout=null,daemonOpts=-XX:MaxPermSize=512m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=CN,-Duser.language=zh,-Duser.variant]
    Actual: DefaultDaemonContext[uid=bdd601a4-019a-4843-a0b7-436e3c1a90d3,javaHome=C:\Program Files\Java\jdk-14.0.1,daemonRegistryDir=C:\Users\xd\.gradle\daemon,pid=19048,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=127.0.0.1:50728,--add-opens,java.base/java.util=ALL-UNNAMED,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=CN,-Duser.language=zh,-Duser.variant]
    
      Looking for a different daemon...
    The client will now receive all logging from the daemon (pid: 8876). The daemon log file: C:\Users\xd\.gradle\daemon\4.10.2\daemon-8876.out.log
    Starting 55th build in daemon [uptime: 3 hrs 1 mins 51.489 secs, performance: 98%, no major garbage collections]                                                                                                                        
    Using 8 worker leases.
    Starting Build
    Settings evaluated using settings file 'D:\d\luo\wallet-api\settings.gradle'.
    Projects loaded. Root project using build file 'D:\d\luo\wallet-api\build.gradle'.
    Included projects: [root project 'lkdemo-pay', project ':lkdemo-app', project ':lkdemo-interface']
    Parallel execution with configuration on demand is an incubating feature.
    
    > Configure project :
    Evaluating root project 'lkdemo-pay' using build file 'D:\d\luo\wallet-api\build.gradle'.
    Applying dependency management to configuration 'annotationProcessor' in project 'lkdemo-app'
    Applying dependency management to configuration 'apiElements' in project 'lkdemo-app'
    Applying dependency management to configuration 'archives' in project 'lkdemo-app'
    Applying dependency management to configuration 'bootArchives' in project 'lkdemo-app'
    Applying dependency management to configuration 'compile' in project 'lkdemo-app'
    Applying dependency management to configuration 'compileClasspath' in project 'lkdemo-app'
    Applying dependency management to configuration 'compileOnly' in project 'lkdemo-app'
    Applying dependency management to configuration 'default' in project 'lkdemo-app'
    Applying dependency management to configuration 'implementation' in project 'lkdemo-app'
    Applying dependency management to configuration 'runtime' in project 'lkdemo-app'
    Applying dependency management to configuration 'runtimeClasspath' in project 'lkdemo-app'
    Applying dependency management to configuration 'runtimeElements' in project 'lkdemo-app'
    Applying dependency management to configuration 'runtimeOnly' in project 'lkdemo-app'
    Applying dependency management to configuration 'testAnnotationProcessor' in project 'lkdemo-app'
    Applying dependency management to configuration 'testCompile' in project 'lkdemo-app'
    Applying dependency management to configuration 'testCompileClasspath' in project 'lkdemo-app'
    Applying dependency management to configuration 'testCompileOnly' in project 'lkdemo-app'
    Applying dependency management to configuration 'testImplementation' in project 'lkdemo-app'
    Applying dependency management to configuration 'testRuntime' in project 'lkdemo-app'
    Applying dependency management to configuration 'testRuntimeClasspath' in project 'lkdemo-app'
    Applying dependency management to configuration 'testRuntimeOnly' in project 'lkdemo-app'
    Applying dependency management to configuration 'annotationProcessor' in project 'lkdemo-interface'
    Applying dependency management to configuration 'apiElements' in project 'lkdemo-interface'
    Applying dependency management to configuration 'archives' in project 'lkdemo-interface'
    Applying dependency management to configuration 'bootArchives' in project 'lkdemo-interface'
    Applying dependency management to configuration 'compile' in project 'lkdemo-interface'
    Applying dependency management to configuration 'compileClasspath' in project 'lkdemo-interface'
    Applying dependency management to configuration 'compileOnly' in project 'lkdemo-interface'
    Applying dependency management to configuration 'default' in project 'lkdemo-interface'
    Applying dependency management to configuration 'implementation' in project 'lkdemo-interface'
    Applying dependency management to configuration 'runtime' in project 'lkdemo-interface'
    Applying dependency management to configuration 'runtimeClasspath' in project 'lkdemo-interface'
    Applying dependency management to configuration 'runtimeElements' in project 'lkdemo-interface'
    Applying dependency management to configuration 'runtimeOnly' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testAnnotationProcessor' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testCompile' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testCompileClasspath' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testCompileOnly' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testImplementation' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testRuntime' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testRuntimeClasspath' in project 'lkdemo-interface'
    Applying dependency management to configuration 'testRuntimeOnly' in project 'lkdemo-interface'
    
    > Configure project :lkdemo-app
    Evaluating project ':lkdemo-app' using build file 'D:\d\luo\wallet-api\lkdemo-app\build.gradle'.
    Selected primary task 'clean' from project :lkdemo-app
    Selected primary task 'build' from project :lkdemo-app
    
    > Configure project :lkdemo-interface
    Evaluating project ':lkdemo-interface' using build file 'D:\d\luo\wallet-api\lkdemo-interface\build.gradle'.
    All projects evaluated.
    Tasks to be executed: [task ':lkdemo-app:clean', task ':lkdemo-interface:compileJava', task ':lkdemo-interface:processResources', task ':lkdemo-interface:classes', task ':lkdemo-interface:jar', task ':lkdemo-app:compileJava', task ':lkdemo-app:processResources', task ':lkdemo-app:classes', task ':lkdemo-app:bootJar', task ':lkdemo-app:bootStartScripts', task ':lkdemo-app:bootDistTar', task ':lkdemo-ap
    p:bootDistZip', task ':lkdemo-app:jar', task ':lkdemo-app:startScripts', task ':lkdemo-app:distTar', task ':lkdemo-app:distZip', task ':lkdemo-app:sourcesJar', task ':lkdemo-app:assemble', task ':lkdemo-app:compileTestJava', task ':lkdemo-app:processTestResources', task ':lkdemo-app:testClasses', task ':lkdemo-app:test', task ':lkdemo-app:check', task ':lkdemo-app:build']
    :lkdemo-app:clean (Thread[Task worker for ':',5,main]) started.
    :lkdemo-interface:compileJava (Thread[Task worker for ':' Thread 7,5,main]) started.
    
    > Task :lkdemo-app:clean
    Task ':lkdemo-app:clean' is not up-to-date because:
      Task has not declared any outputs despite executing actions.
    :lkdemo-app:clean (Thread[Task worker for ':',5,main]) completed. Took 0.007 secs.
    :lkdemo-app:processResources (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:processResources
    Task ':lkdemo-app:processResources' is not up-to-date because:
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\resources\main has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\resources\main\config has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\resources\main\config\application-ci.yml has been removed.
    :lkdemo-app:processResources (Thread[Task worker for ':',5,main]) completed. Took 0.063 secs.
    :lkdemo-app:bootStartScripts (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:bootStartScripts
    Task ':lkdemo-app:bootStartScripts' is not up-to-date because:
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\bootScripts has been removed.
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\bootScripts\lkdemo-app has been removed.
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\bootScripts\lkdemo-app.bat has been removed.
    :lkdemo-app:bootStartScripts (Thread[Task worker for ':',5,main]) completed. Took 0.038 secs.
    :lkdemo-app:startScripts (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-interface:compileJava
    Resolving global dependency management for project 'lkdemo-interface'
    Excluding []
    Excluding []
    Skipping task ':lkdemo-interface:compileJava' as it is up-to-date.                                                                                                                                                                 
    
    > Task :lkdemo-interface:compileJava UP-TO-DATE
    :lkdemo-interface:compileJava (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 4.444 secs.
    :lkdemo-interface:processResources (Thread[Task worker for ':' Thread 7,5,main]) started.
    
    > Task :lkdemo-interface:processResources NO-SOURCE
    file or directory 'D:\d\luo\wallet-api\lkdemo-interface\src\main\resources', not found
    Skipping task ':lkdemo-interface:processResources' as it has no source files and no previous output files.
    :lkdemo-interface:processResources (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 0.0 secs.
    :lkdemo-interface:classes (Thread[Task worker for ':' Thread 7,5,main]) started.
    
    > Task :lkdemo-interface:classes UP-TO-DATE
    Skipping task ':lkdemo-interface:classes' as it has no actions.
    :lkdemo-interface:classes (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 0.0 secs.
    :lkdemo-interface:jar (Thread[Task worker for ':' Thread 7,5,main]) started.
    
    > Task :lkdemo-interface:jar UP-TO-DATE
    Skipping task ':lkdemo-interface:jar' as it is up-to-date.
    :lkdemo-interface:jar (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 0.01 secs.
    
    > Task :lkdemo-app:startScripts
    Resolving global dependency management for project 'lkdemo-app'
    Excluding [org.apache.tomcat:tomcat-annotations-api, ognl:ognl]
    Task ':lkdemo-app:startScripts' is not up-to-date because:
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\scripts has been removed.
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\scripts\lkdemo-app has been removed.
      Output property 'outputDir' file D:\d\luo\wallet-api\lkdemo-app\build\scripts\lkdemo-app.bat has been removed.
    :lkdemo-app:startScripts (Thread[Task worker for ':',5,main]) completed. Took 6.898 secs.
    :lkdemo-app:compileJava (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:compileJava
    Excluding []
    Excluding []
    Task ':lkdemo-app:compileJava' is not up-to-date because:
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\main has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\main\com has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\main\com\luo has been removed.
    All input files are considered out-of-date for incremental task ':lkdemo-app:compileJava'.
    Full recompilation is required because no incremental change information is available. This is usually caused by clean builds or changing compiler arguments.
    Compiling with JDK Java compiler API.
    注: D:\d\luo\wallet-api\lkdemo-app\src\main\java\com\luo\kont\wallet\common\mq\ProofreadBillConsumer.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
    Created classpath snapshot for incremental compilation in 0.04 secs. 1705 duplicate classes found in classpath (see all with --debug).
    :lkdemo-app:compileJava (Thread[Task worker for ':',5,main]) completed. Took 9.908 secs.
    :lkdemo-app:classes (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:classes
    Skipping task ':lkdemo-app:classes' as it has no actions.
    :lkdemo-app:classes (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-app:bootJar (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:bootJar
    Task ':lkdemo-app:bootJar' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\libs\lkdemo-app-1.0.0-SNAPSHOT.jar has been removed.
    :lkdemo-app:bootJar (Thread[Task worker for ':',5,main]) completed. Took 3.374 secs.
    :lkdemo-app:bootDistTar (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:bootDistTar
    Task ':lkdemo-app:bootDistTar' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\distributions\lkdemo-app-boot-1.0.0-SNAPSHOT.tar has been removed.
    :lkdemo-app:bootDistTar (Thread[Task worker for ':',5,main]) completed. Took 0.693 secs.
    :lkdemo-app:bootDistZip (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:bootDistZip
    Task ':lkdemo-app:bootDistZip' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\distributions\lkdemo-app-boot-1.0.0-SNAPSHOT.zip has been removed.
    :lkdemo-app:bootDistZip (Thread[Task worker for ':',5,main]) completed. Took 7.009 secs.
    :lkdemo-app:jar (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:jar SKIPPED
    Skipping task ':lkdemo-app:jar' as task onlyIf is false.
    :lkdemo-app:jar (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-app:distTar (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:distTar
    Task ':lkdemo-app:distTar' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\distributions\lkdemo-app-1.0.0-SNAPSHOT.tar has been removed.
    :lkdemo-app:distTar (Thread[Task worker for ':',5,main]) completed. Took 2.836 secs.
    :lkdemo-app:distZip (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:distZip
    Task ':lkdemo-app:distZip' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\distributions\lkdemo-app-1.0.0-SNAPSHOT.zip has been removed.
    :lkdemo-app:distZip (Thread[Task worker for ':',5,main]) completed. Took 15.88 secs.
    :lkdemo-app:sourcesJar (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:sourcesJar
    Task ':lkdemo-app:sourcesJar' is not up-to-date because:
      Output property 'archivePath' file D:\d\luo\wallet-api\lkdemo-app\build\libs\lkdemo-app-1.0.0-SNAPSHOT-sources.jar has been removed.
    :lkdemo-app:sourcesJar (Thread[Task worker for ':',5,main]) completed. Took 0.184 secs.
    :lkdemo-app:assemble (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:assemble
    Skipping task ':lkdemo-app:assemble' as it has no actions.
    :lkdemo-app:assemble (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-app:compileTestJava (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:compileTestJava
    Excluding []
    Excluding []
    Task ':lkdemo-app:compileTestJava' is not up-to-date because:
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\test has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\test\com has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\classes\java\test\com\luo has been removed.
    All input files are considered out-of-date for incremental task ':lkdemo-app:compileTestJava'.
    Full recompilation is required because no incremental change information is available. This is usually caused by clean builds or changing compiler arguments.
    Compiling with JDK Java compiler API.
    注: 某些输入文件使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: D:\d\luo\wallet-api\lkdemo-app\src\test\java\com\luo\kont\wallet\JschUtil.java使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
    Created classpath snapshot for incremental compilation in 0.053 secs. 1706 duplicate classes found in classpath (see all with --debug).
    :lkdemo-app:compileTestJava (Thread[Task worker for ':',5,main]) completed. Took 12.696 secs.
    :lkdemo-app:processTestResources (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:processTestResources
    Task ':lkdemo-app:processTestResources' is not up-to-date because:
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\resources\test has been removed.
      Output property 'destinationDir' file D:\d\luo\wallet-api\lkdemo-app\build\resources\test\conf.properties has been removed.
    :lkdemo-app:processTestResources (Thread[Task worker for ':',5,main]) completed. Took 0.007 secs.
    :lkdemo-app:testClasses (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:testClasses
    Skipping task ':lkdemo-app:testClasses' as it has no actions.
    :lkdemo-app:testClasses (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-app:test (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:test
    Excluding []
    Task ':lkdemo-app:test' is not up-to-date because:
      Output property 'binResultsDir' file D:\d\luo\wallet-api\lkdemo-app\build\test-results\test\binary has been removed.
      Output property 'binResultsDir' file D:\d\luo\wallet-api\lkdemo-app\build\test-results\test\binary\output.bin has been removed.
      Output property 'binResultsDir' file D:\d\luo\wallet-api\lkdemo-app\build\test-results\test\binary\output.bin.idx has been removed.
    Finished generating test XML results (0.0 secs) into: D:\d\luo\wallet-api\lkdemo-app\build\test-results\test
    Generating HTML test report...
    Finished generating test html results (0.006 secs) into: D:\d\luo\wallet-api\lkdemo-app\build\reports\tests\test
    :lkdemo-app:test (Thread[Task worker for ':',5,main]) completed. Took 0.881 secs.
    :lkdemo-app:check (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:check
    Skipping task ':lkdemo-app:check' as it has no actions.
    :lkdemo-app:check (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-app:build (Thread[Task worker for ':',5,main]) started.
    
    > Task :lkdemo-app:build
    Skipping task ':lkdemo-app:build' as it has no actions.
    :lkdemo-app:build (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
    Use '--warning-mode all' to show the individual deprecation warnings.
    See https://docs.gradle.org/4.10.2/userguide/command_line_interface.html#sec:command_line_warnings
    View Code

    耗时是 1min 4s, 真是太长了啊 !!

    观察到, 此时执行是任务即task是: 

    Tasks to be executed: [task ':lkdemo-app:clean', task ':lkdemo-interface:compileJava', task ':lkdemo-interface:processResources', task ':lkdemo-interface:classes', task ':lkdemo-interface:jar', task ':lkdemo-app:compileJava', task ':lkdemo-app:processResources', task ':lkdemo-app:classes', task ':lkdemo-app:bootJar', task ':lkdemo-app:bootStartScripts', task ':lkdemo-app:bootDistTar', task ':lkdemo-ap
    p:bootDistZip', task ':lkdemo-app:jar', task ':lkdemo-app:startScripts', task ':lkdemo-app:distTar', task ':lkdemo-app:distZip', task ':lkdemo-app:sourcesJar', task ':lkdemo-app:assemble', task ':lkdemo-app:compileTestJava', task ':lkdemo-app:processTestResources', task ':lkdemo-app:testClasses', task ':lkdemo-app:test', task ':lkdemo-app:check', task ':lkdemo-app:build']

    可以看到 有不少的 task,  其中关键task 是:  

    distZip distTar bootJar bootDistZip 

    最长的是 : distZip 竟然花了近 16s.. bootDistZip 花了 7s

     另外, compileTestJava也花了近10s, 当然这个时间是不能少的..

    而 compileTestJava 花了近13s ,  test 源目录没有几个类, 为什么它这么多? 难道是 Created classpath snapshot for incremental compilation in 0.053 secs. 1706 duplicate classes found in classpath ? 

    distZip 生成的  lkdemo-app-1.0.0-SNAPSHOT.zip 到底有什么内容呢 ?  为什么会有这么一个 zip ?  打开发现其中并没有什么特别有用的内容!

     后面我又发现, 其实不用 执行 build 任务, 如果仅仅是 发布的话,  执行 bootjar 就足够.  此时的执行的任务是: 

    Tasks to be executed:[task ':lkdemo-interface:compileJava', task ':lkdemo-interface:processResources', task ':lkdemo-interface:classes', task ':lkdemo-interface:jar', task ':lkdemo-app:compileJava', task ':lkdemo-app:processResources', task ':lkdemo-app:classes', task ':lkdemo-app:bootJar']

    此时的输出是: 

    
    

     Tasks to be executed: [task ':lkdemo-interface:compileJava', task ':lkdemo-interface:processResources', task ':lkdemo-interface:classes', task ':lkdemo-interface:jar', task ':lkdemo-app:compileJava', task ':lkdemo-app:processResources', task ':lkdemo-app:classes', task ':lkdemo-app:bootJar']

    :lkdemo-interface:compileJava (Thread[Task worker for ':',5,main]) started.
    :lkdemo-app:processResources (Thread[Task worker for ':' Thread 7,5,main]) started.

    
    

    > Task :lkdemo-app:processResources UP-TO-DATE
    Skipping task ':lkdemo-app:processResources' as it is up-to-date.
    :lkdemo-app:processResources (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 0.01 secs.

    
    

    > Task :lkdemo-interface:compileJava
    Resolving global dependency management for project 'lkdemo-interface'
    Excluding []
    Excluding []
    Skipping task ':lkdemo-interface:compileJava' as it is up-to-date.

    
    

    > Task :lkdemo-interface:compileJava UP-TO-DATE
    :lkdemo-interface:compileJava (Thread[Task worker for ':',5,main]) completed. Took 3.77 secs.
    :lkdemo-interface:processResources (Thread[Task worker for ':',5,main]) started.

    
    

    > Task :lkdemo-interface:processResources NO-SOURCE
    file or directory 'D:\d\kl\wallet-api\lkdemo-interface\src\main\resources', not found
    Skipping task ':lkdemo-interface:processResources' as it has no source files and no previous output files.
    :lkdemo-interface:processResources (Thread[Task worker for ':',5,main]) completed. Took 0.001 secs.
    :lkdemo-interface:classes (Thread[Task worker for ':',5,main]) started.

    
    

    > Task :lkdemo-interface:classes UP-TO-DATE
    Skipping task ':lkdemo-interface:classes' as it has no actions.
    :lkdemo-interface:classes (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
    :lkdemo-interface:jar (Thread[Task worker for ':',5,main]) started.

    
    

    > Task :lkdemo-interface:jar UP-TO-DATE
    Skipping task ':lkdemo-interface:jar' as it is up-to-date.
    :lkdemo-interface:jar (Thread[Task worker for ':',5,main]) completed. Took 0.007 secs.
    :lkdemo-app:compileJava (Thread[Task worker for ':',5,main]) started.

    
    

    > Task :lkdemo-app:compileJava
    Resolving global dependency management for project 'lkdemo-app'

    
    

    BUILD SUCCESSFUL in 17s
    5 actionable tasks: 1 executed, 4 up-to-date

     

    可以看到, 17s 就足够, 快了n倍 !!

    当然, 执行 jar 任务是不够的, 因为 对于 spring boot 项目, jar 不会执行, 从日志可以看到: 

    > Task :lkdemo-app:jar SKIPPED
    Skipping task ':lkdemo-app:jar' as task onlyIf is false.

    如果 jar 不会执行, 那么jar 前面的会执行吗?  测试发现也不会...

    View Code

    Tasks to be executed: [task ':kl-wallet-app:clean', task ':kl-wallet-interface:compileJava', task ':kl-wallet-interface:processResources', task ':kl-wallet-interface:classes', task ':kl-wallet-interface:jar', task ':kl-wallet-app:compileJava', task ':kl-wallet-app:processResources', task ':kl-wallet-app:classes', task ':kl-wallet-app:jar']

    可以对比发现, 唯一的区别是 最后一个task.. 

    当然, 如果是普通的项目, 非spring boot 项目, jar 是会正常执行的 !!

     另外发现,  即使 java 文件没有任何变化, 还是会去扫描, 然后 也要花费 4 - 5 s 的时间..

    > Task :lkdemo-interface:compileJava UP-TO-DATE
    :lkdemo-interface:compileJava (Thread[Task worker for ':',5,main]) completed. Took 4.104 secs.
    :lkdemo-interface:processResources (Thread[Task worker for ':',5,main]) started.

    ...

    :lkdemo-app:compileJava (Thread[Task worker for ':' Thread 7,5,main]) completed. Took 5.598 secs.

    怎么办?  使用 -x test 排查 test task,   此时的输出是:

    Tasks to be executed: [task ':kl-wallet-interface:compileJava', task ':kl-wallet-interface:processResources', task ':kl-wallet-interface:classes', task ':kl-wallet-interface:jar', task ':kl-wallet-app:compileJava', task ':kl-wallet-app:processResources', task ':kl-wallet-app:classes', task ':kl-wallet-app:bootJar']

    可见, 确实没了 test / testResource 相关的task 了, 构建更快了 !! 

     

    开心!~

  • 相关阅读:
    ASCII,Unicode 和 UTF-8
    ASCII,Unicode 和 UTF-8
    043_JVM——JVM是什么鬼啊?他与操作系统是什么关系?
    042_杂谈——编程语言的发展
    042_线程——我们写的代码,为什么我从来没有线程呢?
    041_ssm——/与/*与*.do的区别?
    040_HTTP——为什么会有get与post两种请求?
    039_Servlet——SpringMVC中怎么不见Servlet呢?我们写的Controller都是普通类,Servlet藏到了那里?
    038_JVM——怎么查看对象的内存大小?
    037_JVM——java中的类加载器是怎么运行的?
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/16735619.html
Copyright © 2020-2023  润新知