tengo un plugin de Eclipse con este manifiesto:Uso experto Tycho para construir con una entrada de manifiesto Bundle-ruta de clases que se descarga por el experto en la dependencia-plugin
...
Bundle-ClassPath: .,
lib/drools-api.jar,
lib/drools-core.jar,
...
Ahora no queremos poner drools-api.jar
y drools-core.jar
de control de código fuente, por lo que utilizar un plugin para buscarlos desde el repositorio Maven:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-bundle-classpath-libs</id>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<stripVersion>true</stripVersion>
<artifactItems>
<artifactItem>
<groupId>org.drools</groupId>
<artifactId>drools-api</artifactId>
</artifactItem>
<artifactItem>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
</artifactItem>
...
Sin embargo, primera vez construimos este módulo, se produce un error, ya que esto sucede:
[WARNING] Missing classpath entry lib/drools-api.jar ...
[WARNING] Missing classpath entry lib/drools-core.jar ...
...
[INFO] --- maven-dependency-plugin:2.1:copy (copy-bundle-classpath-libs) ... ---
...
[INFO] Copying drools-api-5.2.0-SNAPSHOT.jar to .../lib/drools-api.jar
[INFO] Copying drools-core-5.2.0-SNAPSHOT.jar to .../lib/drools-core.jar
...
[INFO] --- maven-osgi-compiler-plugin:0.10.0:compile (default-compile) ... ---
...
[INFO] Compiling 458 source files to ...
// ERROR because drools-api is not in the compilation classpath
Si nos limitamos a construir de nuevo, tiene éxito, debido a que los frascos ya están en el directorio lib
antes de las compilaciones se inicia: No hay advertencias y los frascos se encuentran en la ruta de clase compilación.
¿Cómo podemos solucionar esto, así que no tenemos que comprometer las jarras en el control de código fuente y seguir usando Bundle-ClassPath
?
Nota: la implementación actual del plugin requiere que utilicemos Bundle-ClassPath
: usando Require-Bundle
lugar no es una opción.
¿Ha puesto el frasco drools-api en sus dependencias o sólo en la configuración del plugin maven-dependencia? Otra sugerencia: ¿Por qué no usar http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html – khmarbaise
@khmarbaise: Intenté ambos, incluso considerando pomDependencies, pero nunca puede compilarlo si el directorio lib está vacío –
Hm ... ¿Ha intentado las dependencias de copia de meta en su lugar? – khmarbaise