1. Descripción del problema
Tengo un proyecto aquí con muchos módulos, y están desmantelados en varios proyectos y empaquetados en IDEA. Cada proyecto debe abrirse y empaquetarse o bajo cmd. Sin mencionar el problema, lleva tiempo. De esta manera, empaquetar Todos los proyectos tardan al menos media hora en cargarse en el almacén central. Dado que algunos de mis módulos deben empaquetarse manualmente por separado, no se pueden cargar directamente y deben procesarse. Siempre es muy problemático se lanzan, así que quiero escribir una publicación. Herramienta con la que lidiar, acabo de comenzar a pensar en todo el complemento maven, este método también es problemático, cada proyecto aún debe introducirse, simplemente use el procesamiento por lotes bat directamente, es simple y no necesita ningún entorno, y luego descubrió que bat es realmente difícil de usar. No hay muchos recursos en Internet, especialmente variables. ¿Qué tipo de variables retrasadas están realmente borrachas? Findstr no admite la extracción regular. Se realizará con grep.exe más adelante, por lo que habrá muchos códigos repetitivos. El primero La versión es compartida. Esta versión es relativamente básica y se puede expandir por sí misma. La última versión tiene muchas funciones, por lo que no es fácil de compartir. Las funciones son similares.
Dos, la solución
El código completo es el siguiente:
@echo off
chcp 65001
cls
title sonatype手动处理程序
echo 欢迎使用sonatype处理程序
echo ------------------请选择----------------
echo ------------------1.清除文件----------
echo ------------------2.复制jar----------
echo ------------------3.修改pom----------
echo ------------------4.打包文件----------
echo ------------------5.上传上传----------
echo ------------------6.打包上传----------
echo ------------------0.退出----------------
set /p a=请输入你的选择(0-6):
echo 你输入的数据是:%a%
setlocal enabledelayedexpansion
set filename=""
set targetJar=""
set currentPath=%~dp0
if %a%==0 (
goto et
)
if %a%==1 (
goto clean_file
)
if %a%==2 (
goto copy_jar
)
if %a%==3 (
goto edit_pom
)
if %a%==4 (
goto build_file
)
if %a%==5 (
goto upload_file
)
if %a%==6 (
goto build_upload
)
:copy_jar
::set targetPath=%currentPath%Plugins
::set targetPath=..\target\
set "regexp_jar=-[0-9].[0-9].[0-9].jar"
::删除当前目录下的旧jar
del *.asc*
del *-javadoc.jar*
del *-sources.jar*
for /R %targetPath% %%f in (*.jar) do (
set "line=%%f"
setlocal enabledelayedexpansion
echo "%%f"|findstr /r /C:"%regexp_jar%" >nul 2>&1
if ERRORLEVEL 1 (
rem echo "%%f"
) else (
del /q "%%f"
echo 删除旧版本%%f
)
endlocal
)
for %%I in ("%CD%\..") do set targetPath=%%~fI
set targetPath=%targetPath%\target\
echo %targetPath%
for /R %targetPath% %%f in (*.jar) do (
set "line=%%f"
::setlocal enabledelayedexpansion
echo "%%f"|findstr /r /C:"%regexp_jar%" >nul 2>&1
if ERRORLEVEL 1 (
rem echo "%%f"
) else (
set targetJar=%%f
)
endlocal
)
echo 复制新版本%targetJar%
copy /y %targetJar% %currentPath%
pause
goto end
:edit_pom
set "regexp_jar=-[0-9].[0-9].[0-9].jar"
set "regexp_version=[0-9].[0-9].[0-9]"
for %%I in ("%CD%\..") do set targetPath=%%~fI
set targetPath=%targetPath%\target\
echo %targetPath%
for /R %targetPath% %%f in (*.jar) do (
set "line=%%f"
echo "%%f"|findstr /r /C:"%regexp_jar%" >nul 2>&1
if ERRORLEVEL 1 (
rem echo "%%f"
) else (
set targetJar=%%f
)
)
for /R %currentPath% %%f in (*.jar) do (
set "line=%%f"
echo "%%f"|findstr /r /C:"%regexp_jar%" >nul 2>&1
if ERRORLEVEL 1 (
rem echo "%%f"
) else (
set currentJar=%%f
)
)
if not exist grep.exe (
rem 下载grep到当前路径
mshta http://bathome.net/s/hta/index.html Tools.get('grep')
)
echo %targetJar%|grep -o -w "%regexp_version%" >temp.txt
set /p newJarVersion= < temp.txt
echo 最新jar版本 %newJarVersion%
del temp.txt
echo %currentJar%|grep -o -w "%regexp_version%" >temp.txt
set /p oldJarVersion= < temp.txt
echo 当前jar版本 %oldJarVersion%
del temp.txt
(for /f "delims=" %%i in ('dir /b /s /a-d *.pom') do (
set pomname=%%~ni
set pomfile=%%~ni%%~xi
))
echo 替换pom文件%pomfile%版本号
for %%i in (test.txt) do set file=%%~fi
for /f "delims=" %%i in ('type %pomfile%') do (
set str=%%i
set "str=!str:%oldJarVersion%=%newJarVersion%!"
echo !str!>>$
)
set "stre=%pomfile%"
set "stre=!stre:%oldJarVersion%=%newJarVersion%!"
echo 替换文件%stre%
move %pomfile% %pomfile%.bak
move $ %stre%
pause
:clean_file
del *.asc*
del *-javadoc.jar*
del *-sources.jar*
goto end
:build_file
echo 开始打包jar
(for /f "delims=" %%i in ('dir /b /s /a-d *.jar') do (
set filename=%%~ni
))
echo %filename%
echo README文件判断
if not exist README (
rem 创建README
echo=>README
echo README 文件不存在,已创建该文件!
) else (
echo README 文件已存在,无需创建!
)
jar -cvf %filename%-javadoc.jar README
jar -cvf %filename%-sources.jar README
gpg -ab %filename%-javadoc.jar
gpg -ab %filename%-sources.jar
gpg -ab %filename%.pom
gpg -ab %filename%.jar
::jar -cvf bundle.jar %filename%*
pause
goto end
:upload_file
echo 开始上传jar包
(for /f "delims=" %%i in ('dir /b /s /a-d *.jar') do (
set filename=%%~ni
))
echo 上传%filename%中
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%.jar
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%-sources.jar -Dclassifier=sources
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%-javadoc.jar -Dclassifier=javadoc
pause
goto end
:et
exit
:build_upload
(for /f "delims=" %%i in ('dir /b /s /a-d *.jar') do (
set filename=%%~ni
))
echo %filename%
echo README文件判断
if not exist README (
rem 创建README
echo=>README
echo README 文件不存在,已创建该文件!
) else (
echo README 文件已存在,无需创建!
)
jar -cvf %filename%-javadoc.jar README
jar -cvf %filename%-sources.jar README
gpg -ab %filename%-javadoc.jar
gpg -ab %filename%-sources.jar
gpg -ab %filename%.pom
gpg -ab %filename%.jar
::jar -cvf bundle.jar %filename%*
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%.jar
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%-sources.jar -Dclassifier=sources
call mvn org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file -Durl=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=ossrh -DpomFile=%filename%.pom -Dfile=%filename%-javadoc.jar -Dclassifier=javadoc
pause
goto end
:end
call "sonatype.bat"