编译Eclipse BIRT源码报错:Maven构建缺失manifest.mf,手动Ant正常
Eclipse BIRT构建报错:Maven执行时manifest.mf文件缺失问题
下载Eclipse BIRT项目源码后,尝试通过Maven构建时遇到以下错误:
[ERROR] Failed to execute goal �[32morg.apache.maven.plugins:maven-antrun-plugin:3.1.0:run�[m �[1m(build-api-package)�[m on project �[36morg.eclipse.birt.api�[m: �[1;31mAn Ant BuildException has occured: The following error occurred while executing this line:�[m [ERROR] �[1;31m/home/suleiman/git/birt/build/org.eclipse.birt.api/build.xml:30: Manifest file: /home/suleiman/git/birt/build/org.eclipse.birt.api/target/manifest.mf does not exist.�[m [ERROR] �[1;31maround Ant part ...<ant antfile="build.xml" dir="/home/suleiman/git/birt/build/org.eclipse.birt.api" target="package">... @ 4:104 in /home/suleiman/git/birt/build/org.eclipse.birt.api/target/antrun/build-main.xml�[m [ERROR] -> �[1m[Help 1]
经检查,手动在org.eclipse.birt.api目录下运行Ant可生成该manifest文件,但通过Maven执行整项目构建时就会出现此错误,问题可能出在以下几点:
- 工作目录差异:手动运行Ant时的工作目录是
org.eclipse.birt.api,但Maven执行antrun插件时,可能默认以项目根目录或其他路径作为工作目录,导致Ant脚本中生成manifest.mf的相对路径引用失效,无法正确生成或找到文件。 - Maven生命周期阶段不匹配:Antrun插件绑定的Maven生命周期阶段过早,生成manifest.mf的前置依赖任务还未执行。比如manifest.mf需要依赖Maven编译、资源复制等步骤的输出,但antrun在这些步骤之前运行,自然找不到所需文件。
- Ant脚本路径硬编码问题:查看
org.eclipse.birt.api/build.xml第30行的manifest.mf路径配置,若为绝对路径或未适配Maven的目标目录结构,会导致Maven构建时路径指向错误。手动运行Ant时路径适配,但Maven构建的target目录结构可能有差异,导致文件找不到。 - Antrun插件配置缺失:检查该项目pom.xml中的antrun插件配置,是否未正确指定Ant执行的工作目录(通过
dir参数),或者遗漏了调用生成manifest.mf的前置Ant目标,导致文件未提前生成。
内容的提问来源于stack exchange,提问作者Suleyman Batyrov
相关产品推荐
相关产品推荐

