使用指向本地 p2 存储库的 tycho 构建本地 eclipse 插件

2024-02-08

我正在创建一些需要第三方插件和功能的 Eclipse 插件和功能。为了将这些依赖项包含到我的项目中,我创建了一个 p2 布局存储库。

注意:我的 p2 工件不是 Maven 项目...但是,我正在使用 Maven 风格构建。这是 p2 存储库的 pom.xml

<properties>
    <tycho-version>0.18.0</tycho-version>
  </properties>

  <repositories>
        <repository>
                <id>eclipse-platform-m6</id>
                <layout>p2</layout>
                <url>http://download.eclipse.org/eclipse/updates/3.8</url>
        </repository>
  </repositories>

  <build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-p2-extras-plugin</artifactId>
            <version>${tycho-version}</version>
            <executions>
                <execution>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>publish-features-and-bundles</goal>
                    </goals>
                    <configuration>
                        <compress>false</compress>
                        <artifactRepositoryLocation>/mypath/target/repository</artifactRepositoryLocation>
                        <metadataRepositoryLocation>/mypath/target/repository</metadataRepositoryLocation>
                        <sourceLocation>/mypath/src</sourceLocation>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-repository-plugin</artifactId>
            <version>${tycho-version}</version>
            <configuration>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>verify-repository</goal>
                        <goal>archive-repository</goal>
                    </goals>
                    <configuration>
                        <compress>false</compress>
                        <includeAllDependencies>true</includeAllDependencies>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>  
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-p2-publisher-plugin</artifactId>
          <version>${tycho-version}</version>
          <configuration>
            <publishArtifacts>true</publishArtifacts>
          </configuration>
        </plugin>
        <plugin><!-- enable the Tycho build extension -->
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
        </plugin>   
    </plugins>
  </build>

以上构建成功,并创建(并验证)p2 存储库。我在我的中得到以下结构target/项目目录

- Project
    ..
    ..
    - target
      - p2agent
         - org.eclipse.equinox.p2.core
         - org.eclipse.equinox.p2.engine
      - repository
        - features
        - plugins
          artifacts.xml 
          content.xml
      <projectname>-<version>.zip <!-- This contains same things as repository directory here -->

现在,我使用 Tycho 来构建我的插件和功能,并引用我上面创建的 p2 存储库。我的插件和功能有以下项目结构

- bundle.parent
  - bundle.mainplugin
  - bundle.mainplugin.test.fragment 
  - bundle.mainplugin.feature

这是我的bundle.parent pom.xml

<repositories>
        <repository>
                <id>eclipse-platform-m6</id>
                <layout>p2</layout>
                <url>http://download.eclipse.org/eclipse/updates/3.8</url>
        </repository>
        <repository>
                <id>third-party-eclipse-plugins</id>
                <layout>p2</layout>
                <url>file:///.../target/repository</url>
         </repository>
  </repositories>
  <modules>
    <module>../bundle.mainplugin</module>
    <module>../bundle.mainplugin.test.fragment</module>
    <module>../bundle.mainplugin.feature</module>
  </modules>
  <build>
  <plugins>
    <plugin>
      <groupId>org.eclipse.tycho</groupId>
      <artifactId>tycho-maven-plugin</artifactId>
      <version>${tycho-version}</version>
      <extensions>true</extensions>
    </plugin>
  </plugins>
</build>

最后,我运行目标mvn clean install在父 pom.xml 上。很遗憾,mvn-compile当我的插件中的类扩展插件中的某些类时,会引发编译问题。 (运行时也需要这些类)。这是错误:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:0.18.0:compile (default-compile
) on project <Project Name>: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: copied.org.apache.maven.plugin.CompilationFailureException: Compilation failure
    at copied.org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:442)
    at org.eclipse.tycho.compiler.AbstractOsgiCompilerMojo.execute(AbstractOsgiCompilerMojo.java:239)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more

我的问题:

从编译器错误来看,我相信第谷在某种程度上没有让这些第三方工件可供我存在编译器错误的类使用。有没有办法确定我的插件类是否存在于第谷类路径中?

UPDATE

检查了我希望在第谷反应器中可用的第三方捆绑包的可用性这个位置 http://wiki.eclipse.org/Tycho/Target_Platform#Locally_built_artifacts

java -jar /home/.../eclipse-3.8.2/plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -debug -consolelog -application org.eclipse.equinox.p2.director -repository file:///home/../target/repository -list

所有第三方捆绑包均已成功显示。


Sebastian Zarnekow 的回答给了我一个提示。

使用 ant 构建 xtext 项目时出错:生成语法类失败 https://stackoverflow.com/questions/10079384/error-while-building-an-xtext-project-with-ant-generation-of-the-grammar-classe

从错误消息中可以推断,maven 无法通过注入创建语言模型。原因在上面的链接中有解释:

Xtext 使用 EMF 的 platform:/resource URI 方案。

解决方案是您需要为 EMFGenerator 提供模型目录所在位置的新声明。在 **.mwe2 文件中,替换以下代码

fragment = ecore.EMFGeneratorFragment auto-inject {}

with

fragment = ecore.EMFGeneratorFragment auto-inject {
    javaModelDirectory = "/${projectName}/src-gen"
}

应该可以解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用指向本地 p2 存储库的 tycho 构建本地 eclipse 插件 的相关文章

  • 导出 eclipse 可部署插件和片段时出错

    我有一个 Eclipse 插件在 Eclipse 环境中运行良好 我想将其导出为 jar 文件 因此我选择了 导出 gt 可部署插件和片段 我可以得到一个jar文件 但是报告了一个错误 打开日志文件 它报告我有 1242 个问题 191 个
  • M2Eclipse,META-INF/MANIFEST.MF

    我在 Eclipse 中使用 M2Eclipse 插件 而且不知道什么原因 每次在Eclipse中导入Maven项目时 总是生成一个空的 src main META INF MANIFEST MF 文件 jar 打包的项目 src main
  • Eclipse更新后插件消失了

    已使用更新 Eclipse PDTWindow gt Check for Updates特征 重启后所有第三方插件似乎都被关闭了 从 开始 clean命令行键没有帮助 Eclipse Installation Detals正确包含有关我所有
  • 从 Eclipse 返回已删除的项目

    我有严重的问题 我已经从 Eclipse 中删除了 Java 项目 并且 CVS 上没有新的修订版 有没有机会归还那个项目或者我是najebao Eclipse 管理文件和项目 http www cs umd edu class winte
  • 在 Eclipse 首选项中看不到 PHP 内容类型?

    我有一个带有 PDT 的新 eclipse Juno 安装 我导入了我的首选项 除了在内容类型部分我没有看到 PHP 内容类型之外 一切似乎都工作正常 我看到 php 内容类型为 content typ name0 如屏幕截图所示 这有什么
  • 在 Eclipse 中编写链接特定行的注释

    我正在 Java 中使用 Eclipse 并且处理很长的类 我需要这样的功能 在方法的顶部注释中 例如 有一个由该方法执行的操作列表 对于列出的每个操作 我想将注释的一部分 超链接 到相关代码的特定行 然后使用 Ctrl Click 到该行
  • Mercurial Eclipse 插件

    在哪里可以找到好的 Eclipse Mercurial 插件 MercurialEclipse https bitbucket org mercurialeclipse main 更新站点 https bitbucket org mercu
  • Eclipse RCP View 在应用程序启动时不显示

    我现在面临这个问题大约一个小时 我不知道我做错了什么 您看到我的plugin xml 代码中的错误了吗
  • 在 Eclipse Kepler 中安装远程系统资源管理器

    我正在使用 Eclipse Kepler 并且尝试使用存储库安装远程系统资源管理器 当我在开普勒搜索它时 http download eclipse org releases kepler http download eclipse org
  • Eclipse 中的字/行计数工具

    有没有任何工具或插件可以做到这一点 CodeBlock 有这个简洁的工具 非常好 不知道它是否可以在 Eclipse 上使用 谢谢 http metrics sourceforge net http metrics sourceforge
  • 在 Android ADT Eclipse 插件中滚动布局编辑器

    有谁知道当布局编辑器的内容溢出一个 屏幕 时如何滚动这些内容 我说的是在设计时使用 ADT 布局编辑器 而不是在物理设备上运行时滚动 效果很好 关闭 Android 布局编辑器中的剪辑 切换剪辑 按钮位于 Android 布局编辑器的右上角
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • 将 Tomcat 插件添加到 Flex Builder

    无论如何 我们可以将 tomcat eclipse 插件添加到 Adob e Flex Builder 3 中吗 换句话说 我们可以将所有 Eclipse 插件也添加到 Flex Builder 中吗 我不确定 Tomcat 的情况如何 但
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • 如何自动执行使用 Maven 构建的 Eclipse 插件的版本号更新过程

    我正在处理一个与该项目类似的项目此处描述 http www vogella com articles EclipseTycho article html 因此 它在父 pom xml 中有一些模块
  • Eclipse Papyrus 上的 OCL 约束检查

    有人设法检查在 Eclipse Papyrus 中建模的类图上的 OCL 约束吗 我定义了一个简单的测试配置文件 对构造型属性只有一个约束 OCL self property gt 0 构造型扩展了 Property 元类 因此我将其应用于
  • 从 Eclipse Java 编辑器中获取选定的文本

    我正在开发一个 Eclipse 插件 按下按钮后 该插件会在 Java 编辑器中获取选定的文本 并将其放入出现的文本框中 我的代码如下所示 我从这里得到它 http dev eclipse org newslists news eclips
  • Eclipse 有 IntelliJ Keymapping 插件吗?

    我是一位 IntelliJ 老用户 现在正在从事一个需要 Eclipse 的项目 我不介意学习 Eclipse 默认键盘快捷键 如果有 但是很多操作都没有分配快捷键 grrrr 我想知道是否有任何插件可以自动将 IntelliJ 默认值分配
  • 代码分析器:PMD 和 FindBugs

    1 关于PMD 1 1 如何设置 PMD 检查 以忽略其中一些检查 例如 变量名称太短或太长 删除空构造函数等 如果我这样做 则会出现另一个警告 指出该类必须有一些静态方法 基本上 该类是空的 以供以后开发 我喜欢暂时保留这种状态 1 2
  • Eclipse 颜色主题:“颜色主题”未显示

    我正在尝试改变我的工作方式 这样我就不会在坐在电脑前 8 个小时后感到头疼 所以我想在 Eclipse 中玩转颜色 看看它是否有帮助 我听说过这个 Eclipse Color Theme 插件的好评 我通过 Eclipse Marketpl

随机推荐