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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions