如何在 maven bundle 插件中给出输出目录

How to give an output directory in maven bundle plugin

我开始创建 OSGI 包。所以它工作正常。但是当我将输出目录放在 maven bundle 插件的配置部分时,它不会添加任何已编译的 类。简单地说,类路径是 empty.I 我也在使用 maven 编译器插件。他们互相冲突吗?有没有我以错误的方式配置的东西。这是我的 pox.xml 文件的构建部分。

  <build>
  <plugins>

      <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.1</version>
          <configuration>
              <source>1.7</source>
              <target>1.7</target>
          </configuration>
      </plugin>

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                  <Bundle-Name>${project.artifactId}</Bundle-Name>
                  <Export-Package>
                      demo.wso2.orderprocess.*
                  </Export-Package>
              </instructions>
              <outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>
          </configuration>
      </plugin>

  </plugins>

这是我为解决这个问题所做的工作,它奏效了!!!

将您的项目打包类型保持为 "jar" 并向其添加 OSGI 元数据。这可以通过向 maven-bundle-plugin 添加执行目标并从 maven-jar-plugin 引用它来实现。现在,只需将 outputDirectory 路径添加到要放置 jar 的 maven-jar-plugin 中。

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>  
      <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
    </archive> 
  </configuration>
  <outputDirectory>/path/to/output/directory</outputDirectory>
</plugin>  
<plugin>   
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <executions>
    <execution>
      <id>bundle-manifest</id>
      <phase>process-classes</phase>
      <goals>    
        <goal>manifest</goal>
      </goals>   
    </execution>
  </executions>
</plugin>

现在,要构建项目,运行 以下命令。这将生成清单文件并将其打包到 jar 中。

mvn org.apache.felix:maven-bundle-plugin:manifest install

参考:

Apache Felix Documentation

您应该使用 <buildDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</buildDirectory> 而不是 <outputDirectory>/home/wso2/product/wso2esb-4.9.0/repository/components/dropins</outputDirectory>。它对我有用,所以现在我可以提高 OSGI 包的开发速度!

参考: Maven Bundle Plugin documentation