| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- // var/cleanWorkspace.groovy 清理工作空间
 
- def call(Map config = [:]) {
 
-     def cleanBeforeBuild = config.get('clean', true)
 
-     def keepPatterns = config.get('keep', ['.git', '.gradle'])
 
-     if (!cleanBeforeBuild) {
 
-         echo "⏭️ Skipping workspace cleanup."
 
-         echo "✅ Workspace ready at: ${pwd()}"
 
-         return
 
-     }
 
-     echo "🧹 Cleaning workspace, preserving: ${keepPatterns}"
 
-     if (isUnix()) {
 
-         cleanUnix(keepPatterns)
 
-     } else {
 
-         cleanWindows(keepPatterns)
 
-     }
 
-     echo "✅ Workspace ready at: ${pwd()}"
 
- }
 
- // ---------- Unix ----------
 
- private void cleanUnix(List keep) {
 
-     def mask = keep.join('|')
 
-     sh """
 
-       set +x
 
-       shopt -s extglob dotglob
 
-       rm -rf !(${mask})
 
-     """
 
- }
 
- // ---------- Windows ----------
 
- private void cleanWindows(List keep) {
 
-     // 先把要保留的写成 bat 可识别的“排除”语法
 
-     def exclude = keep.collect { "/EXCLUDE:${it}" }.join(' ')
 
-     bat """
 
-       for /f "delims=" %%i in ('dir /b /a-d') do (
 
-         echo %%i | findstr /i /v "${keep.join('|')}" >nul && del "%%i"
 
-       )
 
-       for /d %%d in (*) do (
 
-         echo %%d | findstr /i /v "${keep.join('|')}" >nul && rd /s /q "%%d"
 
-       )
 
-     """
 
- }
 
 
  |