当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件

2023-11-29

我的工作区中有一个插件和一个功能项目。当我通过“文件”>“导出为”>“功能”手动导出功能时,一切正常。我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事。我将功能项目转换为 Maven 项目,并用以下内容填充 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>MyProject</groupId>
   <artifactId>NMGDBPluginFeature</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>

   <properties>
      <tycho-version>0.22.0</tycho-version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
   </properties>

   <repositories>
      <repository>
         <id>eclipse-luna</id>
         <layout>p2</layout>
         <url>http://download.eclipse.org/releases/luna</url>
      </repository>
   </repositories>

   <build>
      <plugins>
         <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
         </plugin>
      </plugins>
   </build>

</project>

然而脚本抛出:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: NMGDBPluginFeature.feature.group 1.0.0.qualifier
[ERROR]   Missing requirement: NMGDBPluginFeature.feature.group 1.0.0.qualifier requires 'GDBFifoBlocks [1.0.0.gdbfifoblocks]' but it could not be found

怎么会发生这种事?我以为pom.xml使用了项目的feature.xml,不是吗?什么是正确的配置?


到目前为止,您的配置看起来不错。但是,您目前只有功能的自动构建,而没有插件的自动构建。与 Eclipse 导出向导不同,eclipse-feature只处理 feature.xml - 并且它期望引用的插件是在其他地方构建的。

因此,您需要做的是设置一个 Maven 反应器,其中包括eclipse-feature and an eclipse-plugin项目。执行此操作的方法如下:

  1. 将当前的 pom.xml 设为父 POM:将包装更改为pom,适应artifactId有意义的事情(例如MyProject.parent),然后将 pom.xml 移至工作区中的新常规项目中。
  2. 在功能项目的根目录中添加pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
        <groupId>MyProject</groupId>
        <artifactId>MyProject.parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>relative/path/to/parent/project</relativePath>
      </parent>
    
      <artifactId>NMGDBPluginFeature</artifactId>
      <packaging>eclipse-feature</packaging>
    
    </project>
    
  3. 在插件项目根目录下再添加一个pom.xml,除了artifactId- 这需要与插件的相同Bundle-SymbolicName- 以及packaging这需要是eclipse-plugin.

  4. 通过添加以下内容将插件和功能项目包含在 Maven 反应器中<modules>父 POM 中的部分包含这些项目的路径:

      <modules>
        <module>relative/path/to/plugin/project</module>
        <module>relative/path/to/feature/project</module>
      </modules>
    

请注意,需要调整路径,以便它们对于磁盘上的项目位置是正确的(可能与 Eclipse 工作区中显示的不同)。路径需要是相对的,因此它们可能以../.

现在您可以在父 POM 上触发 Maven 构建,并且该功能应该能够解析对您的插件的引用。在 Eclipse 中,您可以从 pom.xml 文件的上下文菜单触发 Maven 构建。或者,如果您还将父项目转换为 Maven 项目,则还可以从项目根目录的上下文菜单运行 Maven 构建。

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

当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件 的相关文章

随机推荐

  • Woocommerce 只读账单字段

    我有一些电子商务网站 其中客户帐单地址是在后端预定义的 我需要将 帐单地址 字段设置为 只读 以避免客户替换那里的信息 但我不知道如何 在哪里做到这一点 是否可以 将以下代码放入主题的 function php 文件中 add action
  • TCPClient 异常的新实例[重复]

    这个问题在这里已经有答案了 几天前我问过类似的问题 那时 我正在尝试使用套接字 目前 我正在使用 TCPClient 来为我完成脏套接字工作 我使用的是 Windows 7 和 Visual studios 2013 Professiona
  • 将 GSL 与 Xcode 集成

    我正在尝试让 Xcode 5 1 1 找到 GSL 的标头 我理想的解决方案是允许我在未来的所有项目中访问这些标头 而无需额外的工作 如果愿意 可以自动访问 大多数说明似乎都说在项目的 构建设置 gt 搜索路径 部分下添加库路径 但是 我的
  • 在纱线集群上运行时,Spark Hive 报告 pyspark.sql.utils.AnalysisException: u'Table not found: XXX'

    我正在尝试在 Cloud 4 2 Enterprise 上的 BigInsights 上运行 pyspark 脚本来访问 Hive 表 首先我创建配置单元表 biadmin bi4c xxxxx mastermanager hive hiv
  • PHP 上的 AES256 字符串加密和 iPhone 上的解密

    我的 php 代码中有这个 iv size mcrypt get iv size MCRYPT RIJNDAEL 256 MCRYPT MODE ECB iv mcrypt create iv iv size MCRYPT RAND key
  • 如何从android中的本地电话簿获取联系人

    我想在列表中显示所有本机联系人 并让用户将列表中的联系人 多个联系人 添加到我的应用程序数据库中 如何做到这一点 任何人都可以给我想法或分享一些代码 提前致谢 我在 Android 2 1 上使用了这段代码 它会拉下任何拥有电话号码 由 S
  • 如何轻松迭代“strings.xml”资源文件中的所有字符串?

    我创建了一个使用 TTS 引擎向用户发送反馈的应用程序 为了提高性能 我使用了synthesizeToFile and addSpeech方法 但要合成的文本字符串位于strings xml文件 因此我必须为 TTS 引擎说出的每个字符串调
  • “django 不支持从方法到十进制的转换”错误

    因此 我正在尝试计算下面提到的参数的咖啡价格 但是 每次我尝试调用 Coffeeprice 方法时 它都会给我一个conversion from method to Decimal is not supported error 我的视图和模
  • 如何从字符串中删除多个换行符

    给定一个字符串 我需要检查是否有多个换行符 n 如果有的话我需要将它们转换为一个换行符 你能给我看一下执行此操作的代码吗 谢谢 try this s s replaceAll r n 2 1
  • GCM CCS 上游消息是否会强制重新连接到 GCM 网络?

    我遇到了一些问题 GCM 推送通知无法在 Android 设备上正确到达 经过几天的研究 我发现 Android 设备使用心跳来保持与 GCM 服务的连接 遗憾的是 心跳似乎太高 因此 Android 设备可能 但并非总是 失去与 GCM
  • 完成另一个活动的活动[重复]

    这个问题在这里已经有答案了 假设我有 3 个活动 A B 和 C A 导致 B B 再导致 C 我希望能够在 A 和 B 之间来回移动 但我希望一旦 C 开始就完成 A 和 B 我了解如何通过意图启动 C 时关闭 B 但是当 C 启动时如何
  • 二维数组声明 - Objective C

    有没有办法分两步声明一个二维整数数组 我的范围有问题 这就是我正在尝试做的 I know Java so this is an example of what I am trying to replicate int Array Array
  • 将 Java Applet 嵌入到 .html 文件中

    我在将小程序嵌入网页时遇到问题 我认为我做得不对 我的 html 文件与 class 文件位于同一目录中 我的主要方法在 CardApp 类中 这是我的html代码 让小程序在多种浏览器上运行是非常困难的 早期标签没有得到适当的标准化 因此
  • 要设置哪些管理员角色设置才能访问该域的 Google Classroom API?

    我们正在尝试创建一个单独的管理员角色来分配给用户 以便能够调用 Google Classroom API 域 如果我们将它们设置为 超级管理员 它可以工作 但我们不想授予这些用户超级管理员权限 有人知道任何指南或设置吗 Answer 除此以
  • 如何防止直接访问 Azure 应用服务中托管的 API

    我有一个托管在 Azure 应用服务中的后端 API 我想使用 Azure API 管理作为此后端 API 的前端 并已在 Azure 中成功配置它 我已将 API 管理配置为在访问此后端 API 时使用 OAuth 这在客户端通过 Azu
  • 如何使用 Mockito 在 java 中模拟 new Date()

    我有一个使用当前时间进行一些计算的函数 我想用mockito来模拟它 我想测试的类的一个例子 public class ClassToTest public long getDoubleTime return new Date getTim
  • 是否有 Java 库可以访问本机 Windows API?

    是否有 Java 库可以访问本机 Windows API 使用 COM 或 JNI 你可以尝试这两个 我已经看到这两个都成功了 http jawinproject sourceforge net Java Win32 集成项目 Jawin
  • phpunit dbunit @dataProvider 不起作用

    我花了很多时间寻找问题出在哪里 但我没有找到任何东西 它说 testAdd 导致错误 缺少参数 当我运行测试时 只是没有执行 dataProvider 我尝试将 die 放入 dataProvider 中 但它还没有死 这是我的代码 cla
  • 为什么nslookup.exe可以解析指定的DNS服务器,但dnsapi.dll中没有相应的API?

    nslookup exe www google com 127 0 0 1 该命令可以使用 DNS 服务器 127 0 0 1 进行解析 不可能在 75 0 KB 的 nslookup exe 中实现全栈 DNS 协议解析器 因此它必须使用
  • 当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件

    我的工作区中有一个插件和一个功能项目 当我通过 文件 gt 导出为 gt 功能 手动导出功能时 一切正常 我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事 我将功能项目转换为 Maven 项目 并用以下内容填充 pom xml