@@ -49,17 +49,26 @@ def get_pmd_binary_file
4949
5050 # builds pmd on currently checked out branch
5151 def build_pmd ( into_dir :)
52- logger . info "#{ @pmd_branch_name } : Building PMD #{ @pmd_version } ..."
53- package_cmd = './mvnw clean package' \
54- ' -Dmaven.test.skip=true' \
55- ' -Dmaven.javadoc.skip=true' \
56- ' -Dmaven.source.skip=true' \
57- ' -Dcheckstyle.skip=true'
58- Cmd . execute ( package_cmd )
52+ # in CI there might have been a build performed already. In that case
53+ # we reuse the build result, otherwise we build PMD freshly
54+ pmd_dist_target = "pmd-dist/target/pmd-bin-#{ @pmd_version } .zip"
55+ if File . exist? ( "#{ @local_git_repo } /#{ pmd_dist_target } " )
56+ # that's a warning, because we don't know, whether this build really
57+ # belongs to the current branch or whether it's from a previous branch.
58+ # In CI, that's not a problem, because the workspace is always fresh.
59+ logger . warn "#{ @pmd_branch_name } : Reusing already existing #{ pmd_dist_target } "
60+ else
61+ logger . info "#{ @pmd_branch_name } : Building PMD #{ @pmd_version } ..."
62+ package_cmd = './mvnw clean package' \
63+ ' -Dmaven.test.skip=true' \
64+ ' -Dmaven.javadoc.skip=true' \
65+ ' -Dmaven.source.skip=true' \
66+ ' -Dcheckstyle.skip=true'
67+ Cmd . execute ( package_cmd )
68+ end
5969
6070 logger . info "#{ @pmd_branch_name } : Extracting the zip"
61- Cmd . execute ( "unzip -qo pmd-dist/target/pmd-bin-#{ @pmd_version } .zip" \
62- ' -d pmd-dist/target/exploded' )
71+ Cmd . execute ( "unzip -qo #{ pmd_dist_target } -d pmd-dist/target/exploded" )
6372 Cmd . execute ( "mv pmd-dist/target/exploded/pmd-bin-#{ @pmd_version } #{ into_dir } " )
6473 end
6574
0 commit comments