Я использую этот простой pom.xml
для генерации OSGi-пакета, используя maven-bundle-plugin
:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.test.osgi</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
Это работает, как и ожидалось (этот проект содержит один открытый класс, который, как я подтвердил, являетсяэкспортируется в связке).Теперь, если я добавлю следующее <configuration>
в плагин:
<configuration>
<outputDirectory>D:\Test</outputDirectory>
</configuration>
, сборка завершится с ошибкой:
[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-cli) @ test ---
[WARNING] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : Classpath is empty. Private-Package and Export-Package can only expand from the classpath when there is one
[WARNING] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : Instructions in Private-Package, or -testpackages that are never used: .*
Classpath:
[ERROR] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : The JAR is empty: dot
[ERROR] Error(s) found in bundle configuration
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.891s
[INFO] Finished at: Fri Mar 30 14:49:46 CEST 2012
[INFO] Final Memory: 8M/20M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.felix:maven-bundle-plugin:2.3.7:bundle (default-cli) on project test: Error(s) found in bundle configuration -> [Help 1]
Почему путь к классу пуст?При чем тут <outputDirectory>
?Это ошибка, или я что-то неправильно понял?
Редактировать Запуск с выходом отладки показывает, что путь к классу действительно идентичен <outputDirectory>
.По умолчанию это каталог mavens target
, поэтому он найдет классы для включения в комплект.Если я изменю его, он будет указывать на каталог, в котором нет классов для включения.Смущает, что в документации для плагина говорится, что <outputDirectory>
это:
Каталог для сгенерированных пакетов.
Это ошибка?