【批处理】将eclipse非maven项目变成maven项目,并导入idea

1 前言

某天,我看到老师上课的代码文件夹,如图

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第1张图片

文件结构如下:

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第2张图片

我想了想,老师是用eclipse写的项目,并且没有用maven。这么多文件我一个一个在idea新建Maven项目,复制粘贴,配置pom.xml文件,实在是太麻烦了。我能不能一步到位,先根据各个项目名称创建maven目录结构,然后把src目录下的所有文件一同复制过去,最后为每个项目弄一个module的pom.xml文件,并在程序运行结束时给出来idea多模块项目的需要的module标签相关配置。

说做就做,最终我花了近半天的时间搞定了。本来可以用不了那么久的时间,一些小bug耽误了不少时间,最折腾我的就是文件绝对路径了,一定要用双引号包围 。我的路径很多是用变量拼接的,如果输入的路径有空格,会需要双引号,这时候也要考虑去除双引号,才能拼接出新路径,最后也要把新路径用双引号包围

2 源代码

@echo off&setlocal Enabledelayedexpansion
@REM 写入要读写的文件
if exist tmp_pom del tmp_pom
if exist tmp111111 del tmp111111
echo "1.0" encoding="UTF-8"?>">>tmp_pom
echo "//maven.apache.org/POM/4.0.0"">>tmp_pom
echo "         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"">>tmp_pom
echo "         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">">>tmp_pom
echo "    ">>tmp_pom
echo "        Spring_study">>tmp_pom
echo "        org.example">>tmp_pom
echo "        1.0-SNAPSHOT">>tmp_pom
echo "    ">>tmp_pom
echo "    4.0.0">>tmp_pom
echo "    01-primary">>tmp_pom
echo "    ">>tmp_pom
echo "        8">>tmp_pom
echo "        8">>tmp_pom
echo "    ">>tmp_pom
echo "">>tmp_pom

@REM 初始化变量
set file=tmp_pom
set left1="        "
set left2="    "
set left3=""
set right=""
set right3=""
set /p in_s=请把要处理的根目录拖入本窗口:&set "in_s=!in_s:"=!"
set /p in_p=请把项目路径拖入本窗口:&set "in_p=!in_p:"=!"

@REM 去除双引号
for /f "delims=" %%a in ("%in_s%") do set in_source=%%~a
for /f "delims=" %%a in ("%in_p%") do set in_project=%%~a
@REM echo %in_source%

@REM 取出项目的名称
for /f "delims=" %%a in ("%in_project%") do set project=%%~nxa
@REM echo !project!

FOR /D %%i IN ("%in_source%\*") DO (
	md "%in_project%\%%~nxi"
	md "%in_project%\%%~nxi\src\main\java"
	md "%in_project%\%%~nxi\src\main\resources"
	md "%in_project%\%%~nxi\src\test\java"
	for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" "%file%"') do (
		if %%a==6 (
			@REM "        Spring_study"
			@REM !left1:~1 这样写可以去除变量的双引号
			echo !left1:~1,-1!!project!!right:~1,-1!>>"pom.xml"
		) else if %%a==11 (
			@REM "    01-primary"
			echo !left1:~1,-1!%%~nxi!right:~1,-1!>>"pom.xml"
		) else (
			set tmp_b=%%b
			echo !tmp_b:~1,-1!>>"pom.xml"
		)
	
	)
	@REM 便于程序运行结束时给出来**idea多模块项目**的需要的**module标签**相关配置。
	echo !left3:~1,-1!%%~nxi!right3:~1,-1!>>tmp111111
	move pom.xml "%in_project%\%%~nxi"
)
FOR /D %%i IN ("%in_source%\*") DO (
	@REM echo %in_source%\%%~nxi\src %in_project%\%%~nxi\src\main\java\
	xcopy /e/h/y "%in_source%\%%~nxi\src\" "%in_project%\%%~nxi\src\main\java\"
	if exist "%in_source%\%%~nxi\WebContent\" (
		xcopy /e/h/y "%in_source%\%%~nxi\WebContent\" "%in_project%\%%~nxi\web\"
		del /q "%in_project%\%%~nxi\web\WEB-INF\lib\*"
	)
	@REM xcopy /s/e/h/y %in_source%\%%~nxi\src\ %in_project%\%%~nxi\src\main\java\
)
if exist tmp111111 (
	type tmp111111
	del tmp111111
)
if exist tmp_pom del tmp_pom
pause>nul

3 idea准备工作

新建一个Maven项目,并删除src文件夹,如图

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第3张图片

温馨提示: 不要忘了在这个pom.xml文件中导入项目需要的依赖

4 如何运行?

新建文本文件,把代码粘贴进去,另存为bat文件,改变编码为ANSI,如图

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第4张图片

双击运行bat文件,把要处理的根目录项目路径依次拖入窗口即可,如图

在这里插入图片描述

5 运行结果

可以看到已经有了maven目录结构src目录下的所有文件,每个项目module的pom.xml文件

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第5张图片

idea多模块项目的需要的module标签相关配置

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第6张图片

将上图圈住部分复制到,多模块项目最外层的pom.xml中,如图

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第7张图片

导入成功

【批处理】将eclipse非maven项目变成maven项目,并导入idea_第8张图片

6 参考链接

批处理如何实现文本文件中指定行内容的替换?_百度知道 (baidu.com)

(3条消息) 关于批处理的转义字符的问题_weixin_43855747的博客-CSDN博客

bat运行出错,提升找不到文件,或者F=文件,D=目录?_百度知道 (baidu.com)

使用批处理copy批量复制指定目录下(包括子目录)的所有文件并重命名?_百度知道 (baidu.com)

7 补充

多模块项目最外层的pom.xml要有

<packaging>pompackaging>

否则会报错,idea删除src后,新建一个module会自动添加,也可以手动添加

你可能感兴趣的:(批处理,自学,maven,eclipse,idea)