批处理文件在执行mvn命令后停止运行

10
set homepath=%userprofile%
set a=%1
set b=%2
set c=%3
set uuid=%4
set zipDirectory=%5
set pluginDirectory=%6
cd %homepath%\%a%
mvn archetype:generate -DarchetypeCatalog=file://%homepath%/.m2/repository

到这里为止一切都正常,但是命令行停止执行了。它不会打印出1,也不会执行后续的命令。

1
c
b
c
%uuid%
Y
cd %homepath%\%a%\%b%
mvn clean install
cd %homepath%\%a%\%b%\%b%-plugin\target
jar -xvf %zipDirectory%
cd %homepath%\%a%\%b%\%b%-plugin\target\META-INF\maven\%c%\%b%-plugin
copy pom.xml + %pluginDirectory%
cd %pluginDirectory%
rename pom.xml %b%-plugin-1.0.0.pom

问题: Maven中是否有任何我不知道的东西会中断批处理过程? 它是否不理解使用单个数字1来执行命令?


3
在Windows的批处理文件中,您需要通过call mvn ...运行mvn和其他批处理文件。 - khmarbaise
很好。像jarcopyrename这样的命令也是一样的吗? - Martin Erlic
哦,即使我调用它,它仍然不会直接执行mvn命令后面的“1”。 - Martin Erlic
2个回答

9
当从批处理文件调用Maven通过archetype创建新项目时,您应该注意执行的交互模式,也就是说,Maven将提示某些值或要求确认。
在您的情况下,似乎这不是所需的行为。因此,您应该通过命令行传递generate目标和特定原型的一些选项,然后通过-B标准Maven选项或-DinteractiveMode=true运行批处理模式。
官方文档中,您应该传递
  • archetypeGroupId、archetypeArtifactId和archetypeVersion定义了用于项目生成的原型。
  • groupId、artifactId、version和package是需要设置的主要属性。每个原型都需要这些属性。一些原型定义了其他属性;如有需要,请参考相应原型的文档。

因此在您的情况下:

call mvn archetype:generate -DarchetypeCatalog=file://%homepath%/.m2/repository -B \
-DarchetypeGroupId=com.sample -DarchetypeArtifactId=artifact -DarchetypeVersion=1.0 \ 
-DgroupId=your.groupid -DartifactId=your.artifactId -Dversion=0.0.1-SNAPSHOT \
-Dsomething-else=value

注意:为了可读性添加\,实际上不需要它。

有道理。当我使用AutoItX编写脚本时,我可以模拟按键,但这是不同的。因此,我错误地假设我可以将批处理文件中的命令行运行到交互式输入中。谢谢。 - Martin Erlic

3

尝试像这样执行该命令。然后下一个命令将按预期执行。

CALL mvn <command>

1
CALL解决了问题,我不需要使用带有Maven参数的建议。 - user3711142

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接