Linux环境下能否使用vscode-car-plugin生成.car部署文件?
WSO2 EI跨平台vscode-car-plugin打包报错解决方案
根因说明
vscode-car-plugin旧版本硬编码使用Windows反斜杠\作为路径分隔符,在Linux环境执行mvn package时无法识别对应路径,即使目标文件实际存在也会抛出File not found错误。以下方案均无需重构现有POM结构,可兼容Windows本地开发与Linux CI/CD流程:
可行解决方案
方案1:升级插件版本(优先推荐)
官方在v1.2.0及后续版本已修复跨平台路径分隔符兼容问题,直接修改POM中插件版本即可:
<plugin> <groupId>org.wso2.maven</groupId> <artifactId>vscode-car-plugin</artifactId> <version>1.2.5</version> <!-- 替换为当前最新稳定版 --> <extensions>true</extensions> </plugin>
升级后Windows本地打包与Linux Jenkins打包可共用同一套配置,无需额外修改。
方案2:强制指定路径分隔符
若因项目约束无法升级插件,可在POM的properties节点添加配置强制使用正斜杠作为路径分隔符:
<properties> <file.separator>/</file.separator> </properties>
也可在Jenkins执行打包命令时临时指定参数,无需修改POM:
mvn package -Dfile.separator=/
方案3:构建前批量替换路径分隔符
如果上述方案不生效,可新增exec-maven-plugin在打包前置阶段批量替换临时构建文件中的反斜杠为正斜杠:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>process-classes</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>sed</executable> <arguments> <argument>-i</argument> <argument>s/\\/\//g</argument> <argument>${project.build.directory}/classes/**/*.xml</argument> </arguments> <!-- Windows本地打包时可执行mvn package -Dskip.exec=true跳过该步骤 --> <skip>${skip.exec}</skip> </configuration> </execution> </executions> </plugin>
验证方法
打包完成后解压生成的.car文件,检查内部artifact.xml中所有资源路径均为正斜杠/后,即可正常部署到WSO2 EI环境。
内容的提问来源于stack exchange,提问作者Inigo Fernandez
相关产品推荐
相关产品推荐

