3

我正在尝试设置 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 运行和调试它们?

4

2 回答 2

1

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

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

我的正则表达式生锈了,但是通过一些测试,以下配置似乎将所需的名称更改应用于 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>
于 2009-09-13T14:11:12.280 回答
0

我编写了一个名为 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 存储库,我有一些用于下载依赖项的代码。如果有人感兴趣,那么我可以将依赖项下载与自动生成器集成。

于 2011-03-06T17:46:41.527 回答