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

时间:2015-11-05 18:31:21

标签: java maven wso2carbon osgi-bundle

我开始创建一个OSGI包。它工作正常。但是当我将输出目录放在maven bundle插件的配置部分中时,它不会添加任何已编译的类。简单地说,类路径是空的。我也使用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>

2 个答案:

答案 0 :(得分:2)

您应该使用<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捆绑开发的速度!

<强>参考: {{3}}

答案 1 :(得分:1)

以下是我为解决这个问题而采取的措施,它确实有效!!!

将项目打包类型保持为“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