如何使用Tycho使用Maven构建作为OSGi部署包的Java项目?

时间:2015-03-11 11:30:34

标签: java maven osgi tycho osgi-bundle

我有一些Java / OSGi项目,我希望构建并打包为一个部署包。

我使用Tycho编译特定目标平台的源代码,所有依赖项都在本地p2存储库中。

如果我在我的pom.xml中设置<packaging>eclipse-plugin</packaging>,那么构建就可以了,但我得到一个.jar作为输出。
当我使用maven-bundle-plugin并设置<packaging>bundle</packaging>构建中断时,因为它使用标准的maven-compiler-plugin而不是Tycho进行编译。

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.5</version>
    <extensions>true</extensions>
    <configuration>
        <manifestLocation>META-INF</manifestLocation>
        <instructions>
            <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-Version>${project.version}</Bundle-Version>
            <Import-Package>
                javax.net;resolution:=optional,
                javax.net.ssl;resolution:=optional
            </Import-Package>
            <Export-Package>my.project.package</Export-Package>
        </instructions>
    </configuration>
</plugin>

如何使用Tycho强制编译?或者还有其他方法可以做我需要的吗?

1 个答案:

答案 0 :(得分:1)

答案可能会有点晚,但我最近创建了一个Maven插件&#34; de.dentrassi.maven:osgi-dp&#34;这可以创造那些&#34; DP&#34; s。

请参阅:https://ctron.github.io/osgi-dp/plugin-info.html

你可以创建一个专门的&#34; dp&#34;打包或重复使用Eclipse Tycho的功能元数据:

<plugin>
    <groupId>de.dentrassi.maven</groupId>
    <artifactId>osgi-dp</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

有关使用Tycho进行编译和&#34; osgi-dp&#34;的完整示例有关创建部署包的信息,请参阅integration test at GitHub