我通过在eclipse中使用maven bundle插件创建osgi包。在我的应用程序中,我有非maven jar文件,大多数java类都依赖于我的应用程序。我的pom.xml文件如下。
<build>
...
<plugins>
....
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>org.myapp.Activator</Bundle-Activator>
<Include-Resource>a1.jar=${basedir}/src/main/java/lib/a1.jar,a2.jar=${basedir}/src/main/java/lib/a2.jar,a3.jar=${basedir}/src/main/java/lib/a3.jar</Include-Resource>
<Bundle-ClassPath>.,${basedir}/src/main/java/lib/a1.jar,${basedir}/src/main/java/lib/a2.jar,${basedir}/src/main/java/lib/a3.jar</Bundle-ClassPath>
</instructions>
</configuration>
</plugin>
<!-- Maven Compiler plugin -->
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<includes>
<include>${project.basedir}/src/main/java/**</include>
</includes>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
....
</plugins>
</build>
通过使用这个我可以成功构建我的应用程序,我的最终jar包也包含所有需要的jar文件,但问题是,最终包中没有.class文件,我的目标目录也不包含任何。类文件。
如果我从maven-compiler-plugin中删除包含标记,那么我的类不存在错误。
请告诉我上面代码的问题是什么,它不会在目标目录和最终包中创建.class文件。
答案 0 :(得分:0)
你的解释不是很清楚,你说的是
包含所有需要的jar文件
但是,那么你说
最终包中没有.class文件
因此它不包含所有需要的jar文件。
话虽如此,您似乎错过了关键export-package
和private-package
BND指令。查看maven bundle plugin here