eclipse - 当自动化 Eclipse 的 "Export as Feature"时,Maven/Tycho 看不到我的插件

标签 eclipse maven eclipse-plugin tycho

我的工作区中有一个插件和一个功能项目。当我通过"file">“导出为”>“功能”手动导出功能时,一切正常。我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事。我将功能项目转换为 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 react 器,其中包括 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 相同- 以及packaging这需要是 eclipse-plugin .

  4. 通过添加 <modules> 将插件和功能项目包含在 Maven react 器中父 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 构建。

关于eclipse - 当自动化 Eclipse 的 "Export as Feature"时,Maven/Tycho 看不到我的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739467/

相关文章:

python - 如何在 Eclipse 中使用 Pyenv virtualenv?

Eclipse Oxygen 插件缺少约束 : Import-Package

maven - 如何使用 maven-bundle-plugin 从导入包中排除版本号?

java - 是否可以通过命令行修改 eclipse 工作区?

java - 我无法在tomcat中使用JNDI连接MySQL

android - Gluon eclipse插件-如何访问android SDK

java - 如何让 Tycho 将特定于平台的片段加载到任何操作系统的测试运行时中?

java - Maven 拒绝从远程存储库下载 aar 打包的依赖项

android - 将 GitHub Android 库发布到 Maven Central

java - 设置 Maven 环境变量