gpt4 book ai didi

maven - 如何在maven antrun插件中执行输入任务

转载 作者:行者123 更新时间:2023-12-02 00:01:24 26 4
gpt4 key购买 nike

我创建了一个 Maven 项目,并且正在尝试运行外部脚本。在此外部脚本中,我使用 read 命令来提出问题并获得答案。

如果我使用 exec-maven-plugin 执行sudo mvn package,它就会起作用。

但是,但是,但是:

  • 如果我执行sudo mvn package,我的脚本不会在读取命令处停止。
  • 如果我使用 exec-maven-plugin 执行sudo mvn release:prepare,我的脚本不会在读取命令处停止。
  • 如果我使用 maven-antrun-plugin 执行sudo mvn release:prepare,我的脚本不会在读取命令处停止。

显然,我需要发布:)

我尝试使用其他读取命令语法更改脚本的第一行(#/usr/bin/bash、sh、...)...

有人有办法帮助我吗???

这是我的 pom.xml 的相关部分

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>initialisation</id>
<phase>initialize</phase>
<configuration>
<tasks>
<exec dir="${project.basedir}" executable="${project.basedir}/livraison/outils/0_init_livraison.ksh" failonerror="true">
<arg line="${project.name} ${project.version} ${ancienneVersion}" />
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

这是我的 0_init_livraison.ksh 的相关部分

#!/bin/ksh

echo -e "| EXECUTION DU SCIPT generation_livrable.ksh \n"

echo "SHELL : $SHELL"
boucle="boucler"
while [ $boucle -eq "boucler" ]
do
echo -ne " Souhaitez-vous forcer la procedure (oui/non)? "
read rep1

case "$rep1" in
o|O|y|Y|oui|Oui|OUI|yes|Yes|YES)
echo ""
break
;;

n|N|non|Non|NON|no|No|NO)
echo -e " Abandon de la procedure..."
boucle=""
exit 1
;;
*)
echo -e " Reponse incomprehensible.\c"
esac
done

当我执行 sudo mvn package 时控制台的最后几行(然后,什么也没有发生。它似乎由于无限 while 循环而被阻止)

[INFO] --- maven-antrun-plugin:1.8:run (initialisation) @ MyProject---
[WARNING] Parameter tasks is deprecated, use target instead
[INFO] Executing tasks

main:
[exec] | EXECUTION DU SCIPT generation_livrable.ksh
[exec]
[exec] SHELL : /bin/bash

感谢您的阅读:)

编辑:

我尝试将属性与 maven-antrun-plugin 一起使用。但我有类似的问题:antrun input task doesn't work during mvn release:prepare operation

最佳答案

两者皆有

设置环境变量ANT_HOME,给你的Maven添加一个属性: <property name="ant.home" value="${env.ANT_HOME}" />并添加一个参数vmlauncher="true"到您的 Ant Exec 部分。

或者

执行ksh而不是使用脚本作为参数的脚本名称。我的意思是:

<exec dir="${project.basedir}" executable="ksh" failonerror="true">
<arg value="${project.basedir}/livraison/outils/0_init_livraison.ksh">
</exec>

关于maven - 如何在maven antrun插件中执行输入任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com