Skip to content

sofa-ark-maven-plugin repackage 是否需要对空格进行处理 #1095

@xloouis

Description

@xloouis

原因

在 MacOS 中, 使用 IDEA 进行 mvn clean package 时, IDEA 会自动加上一个监听器 jar, 比如下面这个

-Dmaven.ext.class.path=/Users/zhangsan/Applications/IntelliJ IDEA Ultimate.app/Contents/plugins/maven/lib/maven-event-listener.jar

其中 IntelliJ IDEA Ultimate.app 带有空格, RepackageMojo 在执行的时候会把上面这个参数带上一起执行, IDEA 会被认为是一个 goal, 导致执行失败.

错误日志

[INFO] execute 'mvn dependency:tree' with command 'mvn dependency:tree -DappendOutput=true -DoutputFile="/Users/zhangsan/Work/version-control/xxxx/deps.log.xxxxx" -Djansi.passthrough=true -Didea.version=2025.2.3 -Dmaven.repo.local=/Users/zhangsan/.m2/repository -Dstyle.color=always -Dmaven.ext.class.path=/Users/zhangsan/Applications/IntelliJ IDEA Ultimate.app/Contents/plugins/maven/lib/maven-event-listener.jar'

[ERROR] Unknown lifecycle phase "IDEA". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: pre-clean, clean, post-clean, validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy. -> [Help 1]

可能的解决方案

doGetAllArtifactByMavenTree 中需要判断一下是否有空格, 最终命令中应该加上双引号:

-Dmaven.ext.class.path="/Users/zhangsan/Applications/IntelliJ IDEA Ultimate.app/Contents/plugins/maven/lib/maven-event-listener.jar"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions