插件作者
osgi-dp 插件是由Jens Reimann 开发和维护的,主要用于将 Maven 项目打包为 OSGi 部署包。
GitHub地址:ctron/osgi-dp: Maven plugin for creating OSGi deployment packages
插件描述
OSGi DP Maven 插件根据Eclipse Tycho™ 功能、捆绑包或任何其他 Maven Java 项目的配置创建 OSGi 部署包。
除了 Tycho 提供的功能外,插件目标构建还将创建一个包含所有直接包含的 bundle 的 DP 存档。这包括包含的功能包含的 bundle(不开玩笑)。
P2 功能可以将依赖项引用为“包含”或“必需”。“包含”的依赖项将成为该功能的一部分。OSGiDP 插件对此表示支持。它将遍历所有依赖项,并且仅包含标记为“包含”的依赖项。如果依赖项是一项功能并且它是“包含的”,则其功能和捆绑包也将被考虑。
此外,还可以指定将包含的 “additional dependencies” 列表。
当插件用作扩展时,也可以使用 Maven 打包类型 dp。
参考地址:OSGi distribution package builder – Introduction
单个pom模块生成dp包
Pom中配置属性eclipse-plugin
插件配置如下,执行mvn clean package -f pom.xml将在target目录生成相应的dp包,比如artifact.dp
<plugins>
…
<plugin>
<groupId>de.dentrassi.maven</groupId>
<artifactId>osgi-dp</artifactId>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
…
</plugins>
聚合功能模块生成dp包
父POM相关配置如下,执行mvn clean package -f pom.xml将在target目录生成相应的dp包,其中dp包包含了additionalDependencies中设置的子模块。子模块的pom文件中属性packaging的配置必须是:eclipse-plugin
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
<module>module14</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>de.dentrassi.maven</groupId>
<artifactId>osgi-dp</artifactId>
<version>${osgi-dp-plugin-version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<additionalDependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>module1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>module2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>module3</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>module4</artifactId>
<version>1.0.0</version>
</dependency>
</additionalDependencies>
</configuration>
</plugin>
</plugins>
</build>