如何设置捆绑开发环境(Eclipse Equinox Maven)

Posted

技术标签:

【中文标题】如何设置捆绑开发环境(Eclipse Equinox Maven)【英文标题】:How to setup bundle development environment (Eclipse Equinox Maven) 【发布时间】:2010-11-27 18:17:52 【问题描述】:

我正在尝试设置 Eclipse 环境来开发捆绑包(使用 maven-bundle-plugin-bnd) 并运行和调试从 Eclipse 捆绑 Equinox

我使用 org.apache.felix maven-bundle-plugin 创建了示例包,并且可以从 eclipse equinox 安装和启动该包, 但每次我需要运行“安装文件:C:\path\bundle1.jar”、“安装文件:C:\path\bundle2.jar”时都会导致疼痛。我搜索了运行配置,但它只在工作区而不是 Maven 项目中安装和启动(插件)项目。

我所做的是创建 maven 项目并添加依赖项(bundle1、bundle2 等)并添加 maven-dependency-plugin 以将所有依赖的包复制到一个文件夹中(另一个问题是Equinox 使用“_”分隔符来确定版本捆绑包,但 maven 使用“-”作为分隔符)如果我不在独立的 Equinox 应用程序中剥离版本,我需要在 config.ini 文件中提供捆绑包的版本,但我不希望这样,这是解决这个问题的正确方法吗?

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>$bundleDirectory</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
              <stripVersion>true</stripVersion>
            </configuration>
          </execution>
        </executions>
      </plugin>  

总而言之,我在文件夹中有捆绑包,它是使用 org.apache.felix maven-bundle-plugin 创建的,我如何从 eclipse 中运行和调试它们?

【问题讨论】:

【参考方案1】:

我不会说这是一个“正确”的解决方案,但它可能对你有用。

antrun plugin可以用来修改依赖,将最后的连字符替换为下划线,所以依赖插件不需要剥离版本。

我的正则表达式生锈了,但通过一些测试,以下配置似乎将所需的名称更改应用于 bundleDependency 目录中的文件。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>$bundleDirectory</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>true</overWriteSnapshots>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <phase>package</phase>
      <configuration>
        <tasks>
          <!-- move within same directory is preferred method for a rename-->
          <move todir="$bundleDirectory">
            <fileset dir="$bundleDirectory"/>
            <mapper type="regexp" from="([a-zA-Z0-9\.-]+)(-)([0-9\.]+.jar)" 
              to="\1_\3"/>
          </move>
        </tasks>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
  <dependencies>
   <dependency>
     <groupId>ant</groupId>
     <artifactId>ant-nodeps</artifactId>
     <version>1.6.5</version>
   </dependency>
  </dependencies>
</plugin>

【讨论】:

【参考方案2】:

我编写了一个名为 auto-builder (http://code.google.com/p/auto-builder) 的工具。它内省基于 PDE 的项目并生成 Ant 构建文件;它支持对依赖项和所有爵士乐的传递闭包。

我发布了一篇文章:http://empty-set.net/?p=9。我之所以写它,是因为我使用的 Maven 工具在与 PDE 集成时“不能正常工作”。基本上,我想在 PDE 中进行编码,并拥有一个基于 Hudson 的 CI,而不会在两者之间大惊小怪。

生成 Ant 文件很好,因为它为您提供了声明式构建工具的所有好处,但它为您提供了关于它正在做什么的过程描述。

我正在寻找更多基于 PDE 的项目来测试它。周围有几个 RFC-0112 Bundle 存储库,我有一些用于下载依赖项的代码。如果有人有兴趣,那么我可以将依赖项下载与自动生成器集成。

【讨论】:

以上是关于如何设置捆绑开发环境(Eclipse Equinox Maven)的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 ANDROID_SDK_HOME 环境变量?

java环境配置和开发软件Eclipse如何安装,详细说明下,包过环境变量设置?谢谢

如何搭建Java开发环境 使用eclipse开发Java程序

搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

如何在windows环境用eclipse搭建linux开发环境

如何设置 Eclipse 控制台语言环境/语言