首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当自动化Eclipse的“导出为特性”时,Maven/Tycho没有看到我的插件

当自动化Eclipse的“导出为特性”时,Maven/Tycho没有看到我的插件
EN

Stack Overflow用户
提问于 2015-02-26 10:06:07
回答 1查看 597关注 0票数 3

我的工作空间中有一个插件和一个功能项目。当我通过File > export > feature手动导出该特性时,一切都运行良好。我正在尝试编写一个自动插件构建和导出脚本,以摆脱这种烦琐的工作。我将特性项目转换为Maven项目,并用以下内容填充pom.xml:

代码语言:javascript
复制
<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>

然而,脚本抛出:

代码语言:javascript
复制
[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,不是吗?什么是正确的配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-27 14:37:09

到目前为止,您的配置看起来很好。然而,您目前只有一个自动构建为您的功能,而不是为插件。与EclipseExport向导不同,eclipse-feature只处理feature.xml -它希望引用的插件构建在其他地方。

因此,您需要做的是建立一个Maven反应堆,它包括一个eclipse-feature和一个eclipse-plugin项目。以下是您如何做到这一点:

  1. 使当前的pom.xml成为父POM:将打包更改为pom,使artifactId适应有意义的东西(例如MyProject.parent),并将pom.xml移动到工作区中的一个新的通用项目中。
  2. 在特性项目的根目录中添加一个pom.xml: 4.0.0 MyProject MyProject.parent 1.0.0-快照相对/路径/to/父/项目NMGDBPluginFeature eclipse-特性
  3. 在插件项目的根中添加另一个pom.xml,它与上面的插件项目相同,除了artifactId --这需要与插件的Bundle-SymbolicName相同,packaging需要是eclipse-plugin
  4. 将插件和特性项目包括在Maven反应堆中,方法是在父POM中添加一个<modules>部分,并提供这些项目的路径: 相对/路径/到/插件/项目相对/路径/到/特性/项目

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28739467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档