我开始创建一个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>
答案 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
<强>参考:强>