You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Eclipse Tycho 4构建Acceleo项目遇依赖问题求助

解决Tycho构建Acceleo插件的核心问题

一、修复依赖解析错误

  1. 添加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>
    
  2. 清理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与项目结构

  1. 父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>
    
  2. 推荐使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:15:22