Maven帮助:在Ubuntu 23.04(Bash 5.2)上评估输出中断

nsc4cvqm  于 12个月前  发布在  Maven
关注(0)|答案(1)|浏览(103)

很长一段时间以来,我一直使用以下命令从Maven项目中以编程方式获取工件版本(例如:用于CI/CD目的):

mvn help:evaluate -Dexpression=project.version -q -DforceStdout

最近,这个命令被打破了。
不管出于什么原因,输出中现在包含了一些看起来像shell转义序列(的片段)的东西,而不是由shell呈现,但是当然会使用输出中断任何命令。
为了说明我的意思:

# What I expect (Ubuntu 22.04, Maven 3.6.3, maven-help-plugin 3.4.0, Bash 5.1.16)
$ mvn help:evaluate -Dexpression=project.version -q -DforceStdout | hexdump -C
00000000  31 2e 30 2e 30                                    |1.0.0|
00000005

# What happens now (Ubuntu 23.04, Maven 3.8.7, maven-help-plugin 3.4.0, Bash 5.2.15)
$ mvn help:evaluate -Dexpression=project.version -q -DforceStdout | hexdump -C
00000000  31 2e 30 2e 30 1b 5b 30  6d                       |1.0.0.[0m|
00000009

$ mvn help:evaluate -Dexpression=project.version --batch-mode -q -DforceStdout | hexdump -C
00000000  1b 5b 30 6d 31 2e 30 2e  30 1b 5b 30 6d           |.[0m1.0.0.[0m|
0000000d

当然,我首先假设的是我的shell /环境被搞砸了,所以我在Docker中重新创建了这个问题。您可以尝试自己生成上面的输出。

FROM ubuntu:22.04

RUN apt update && apt install -y maven bsdmainutils

WORKDIR /code

RUN cat <<EOF > /code/test.sh
    mvn help:evaluate -Dexpression=project.version -q -DforceStdout | hexdump -C
EOF

RUN cat <<EOF > /code/pom.xml
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
</project>
EOF

CMD ["sh", "test.sh"]
FROM ubuntu:23.04

RUN apt update && apt install -y maven bsdmainutils

WORKDIR /code

RUN cat <<EOF > /code/test.sh 
    mvn help:evaluate -Dexpression=project.version -q -DforceStdout | hexdump -C 
EOF

RUN cat <<EOF > /code/pom.xml
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
</project>
EOF

CMD ["sh", "test.sh"]

我是不是漏了什么?我需要升级我的Google-Fu吗?
如果这确实是一个错误,对报告有什么帮助吗(甚至是向哪个项目报告?))也会非常感激:)

cngwdvgl

cngwdvgl1#

这看起来非常像彩色控制台输出。
为了避免这种情况,我在脚本中添加了--batch-mode标志。

相关问题