使用Eclipse Tycho 4构建Acceleo项目遇依赖问题求助
解决Tycho构建Acceleo插件的核心问题
一、修复依赖解析错误
添加Eclipse Maven仓库
org.eclipse.acceleo.maven不在Maven中央仓库,需在父pom.xml中同时配置项目仓库和插件仓库:<repositories> <repository> <id>eclipse-releases</id> <url>https://repo.eclipse.org/content/groups/releases/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>eclipse-releases</id> <url>https://repo.eclipse.org/content/groups/releases/</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>清理Maven缓存并强制更新
执行命令清除缓存并重新拉取依赖:mvn clean install -U-U参数会强制Maven忽略本地缓存,重新校验并拉取最新依赖。
二、配置.emtl文件自动生成
在Acceleo子项目的pom.xml中,添加Acceleo Maven插件配置,指定.mtl源文件路径和.emtl输出路径:
<build> <plugins> <!-- Acceleo编译插件,生成.emtl文件 --> <plugin> <groupId>org.eclipse.acceleo</groupId> <artifactId>org.eclipse.acceleo.maven</artifactId> <version>3.6.4</version> <executions> <execution> <id>generate-emtl</id> <goals> <goal>generate</goal> </goals> <configuration> <!-- .mtl模板所在的源目录 --> <sourceFolder>${project.basedir}/src</sourceFolder> <!-- .emtl文件输出目录,需纳入Tycho编译范围 --> <outputFolder>${project.build.directory}/generated-sources/acceleo</outputFolder> <!-- 指定要编译的模板文件,支持多个 --> <templates> <param>com/example/templates/YourTemplate.mtl</param> </templates> <!-- 添加Acceleo依赖(如EMF核心库) --> <dependencies> <dependency> <groupId>org.eclipse.emf</groupId> <artifactId>org.eclipse.emf.ecore</artifactId> <version>2.25.0</version> <scope>compile</scope> </dependency> </dependencies> </configuration> </execution> </executions> </plugin> <!-- Tycho插件配置,确保生成的.emtl被打包进插件 --> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-compiler-plugin</artifactId> <version>2.7.5</version> <!-- 与Acceleo 3.6.4兼容的Tycho版本 --> <configuration> <source>11</source> <!-- 根据你的JDK版本调整 --> <target>11</target> <!-- 包含Acceleo生成的目录 --> <includes> <include>**/*.java</include> <include>**/*.emtl</include> </includes> </configuration> </plugin> </plugins> </build>
注意:子项目的<packaging>必须设置为eclipse-plugin,否则Tycho无法识别为插件项目。
三、优化父pom与项目结构
父pom核心配置
父pom需设置pom打包类型,配置Tycho核心插件和目标平台:<packaging>pom</packaging> <modules> <module>your-acceleo-plugin-module</module> <!-- 其他模块(如更新站点、特性项目)按需添加 --> </modules> <build> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-maven-plugin</artifactId> <version>2.7.5</version> <extensions>true</extensions> </plugin> <!-- 目标平台配置,推荐使用.target文件管理依赖 --> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>2.7.5</version> <configuration> <target> <artifact> <groupId>your.group.id</groupId> <artifactId>your-target-platform</artifactId> <version>1.0.0</version> <classifier>target</classifier> </artifact> </target> <resolver>p2</resolver> </configuration> </plugin> </plugins> </build>推荐使用Target Platform管理依赖
创建.target文件,包含Acceleo、EMF等所需的Eclipse特性,Tycho会自动从p2仓库解析依赖,避免手动配置大量Maven坐标,减少依赖冲突。
四、常见遗漏检查
- 确认Acceleo插件项目的
plugin.xml中已正确声明模板相关的扩展点(如org.eclipse.acceleo.module)。 - 检查Tycho版本与Acceleo版本的兼容性:Acceleo 3.6.4建议搭配Tycho 2.5.x以上版本。
- 确保
.mtl文件的路径与插件配置中的<sourceFolder>和<templates>参数匹配。
内容的提问来源于stack exchange,提问作者Che
相关产品推荐
相关产品推荐

