【问题标题】:When automating Eclipse's "Export as Feature", Maven/Tycho doesn't see my plugin自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件
【发布时间】:2015-02-26 10:06:07
【问题描述】:

我的工作区中有一个插件和一个功能项目。当我通过 File > Export As > Feature 手动导出功能时,一切正常。我正在尝试编写一个自动插件构建和导出脚本来摆脱这个苦差事。我将功能项目转换为 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 maven eclipse-plugin tycho


    【解决方案1】:

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

    所以你需要做的是建立一个 Maven 反应器,其中包括一个 eclipse-feature 和一个 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相同——和@ 987654330@ 必须是eclipse-plugin

    4. 通过在父 POM 中添加带有这些项目路径的 &lt;modules&gt; 部分,在 Maven 反应器中包含插件和功能项目:

        <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 构建。

    【讨论】:

    • 感谢您的详细而快速的回答。这不直观。
    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多