Reposted; first one got buried somewhere.
I'm using felix's maven plugin to build OSGI apps in eclipse. I understand
OSGI overall but the tools chain is driving me nuts.
What I don't understand is the interaction between pom.xml, the felix
maven plugin, MANIFEST.MF, and the "Organize Manifest Wizard" in eclipse.
And should META-INF be in the bundle root or src/main/resources? Putting a
copy in src/... does seem to be noticed there but breaks everything,
including command line builds. Apparently due to a broken
com.ibm.icu.something according to posted bugs.
My mental model is the pom is the input and MANIFEST.MF is produced by
felix maven plugin based on that pom. This model seems inaccurate somehow.
Felix maven plugin's output is voluminous with lots of broken references
which eclipse's "organize manifest wizard" seems there to repair. Where do
the bogus references come from? In practice, it seems necessary for me to do
further repairs to MANIFEST.MF by hand, but these seem to somehow persist
after I change the pom (thus the conflict with my mental model).
There also seems to be vast differences between running mvn install in the
command line and running the same thing in eclipse. Using the command line
then importing into eclipse results in bundles that are broken in eclipse
and another round of whack a mole to sort things out again. This often
results in multiply-defined jar errors with the same jar in "PDE
Dependencies" and "Maven Dependencies". Removing PDE dependencies in build
settings seems to sort that out; sometimes.
The specific problem I'm struggling with is
org.osgi.framework.BundleException: The activator
com.gestalt.soakit.core.CoreActivator for bundle soakit.core is invalid when
that class is definitely defined. I think this means there's a conflict
between the BundleActivator class from OSGI vs Equinox, but nothing I've
tried seems to repair it (importing org.eclipse.osgi.everything, not
org.osgi.whatever).
The main problem here is that I'm confused about how the tools chain
works; broken mental model. Can someone set me straight?
Here's one of the key poms.
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>soakit</groupId>
<artifactId>soakit.core</artifactId>
<version>1.0-SNAPSHOT</version>
<name>soakit.core</name>
<description>SoaKit Core Abstraction Layer. Defines interfaces and
abstract classes for the components defined in sub-modules. Provides a
factory class for defining soakit composites with an XML configuration
file.</description>
<packaging>bundle</packaging>
<parent>
<groupId>soakit</groupId>
<artifactId>soakit</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javax.xml.parsers</groupId>
<artifactId>jaxp-api</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1-1</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>osgi</artifactId>
<version>3.4.0.v20080605-1900</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1-beta-9</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>.</directory>
<includes>
<include>plugin.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<pde>true</pde>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.3</version>
<extensions>true</extensions>
<configuration>
<unpackBundle>true</unpackBundle>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Bundle-Version>${pom.version}</Bundle-Version>
<Bundle-Name>${artifactId}</Bundle-Name>
<Bundle-SymbolicName>${artifactId}</Bundle-SymbolicName>
<Bundle-Description>Soakit Core
Bundle</Bundle-Description>
<Bundle-Activator>com.gestalt.soakit.core.CoreActivator</Bundle-Activator>
<Embed-Dependency>*;scope=compile|runtime;inline=true</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Directory>target/dependency</Embed-Directory>
<_failok/>
<Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
<Import-Package>
.,
*;-split-package:=merge-first,
org.apache.commons.collections.*;-split-package:=merge-first;version="3.2"
org.apache.commons.collections.iterators.*;-split-package:=merge-first;version="3.2",
org.jdom;-split-package:=merge-first;version="1.0",
org.jdom.*;-split-package:=merge-first;version="1.0",
org.jdom.input.*;-split-package:=merge-first;version="1.0",
org.jdom.output.*;-split-package:=merge-first;version="1.0",
org.apache.xerces.parsers;-split-package:=merge-first,
<!--
javax.*;-split-package:=merge-first,
javax.jws.*;-split-package:=merge-first,
javax.xml.bind.*;-split-package:=merge-first,
javax.annotation.*;-split-package:=merge-first,
javax.xml.soap.*;-split-package:=merge-first,
javax.xml.stream.*;-split-package:=merge-first,
javax.activation.*;-split-package:=merge-first,
-->
</Import-Package>
<Export-Package>
.,
*;-split-package:=merge-first,
org.apache.commons.collections.*;-split-package:=merge-first;version="3.2",
org.apache.commons.collections.iterators.*;-split-package:=merge-first;version="3.2",
org.jdom;-split-package:=merge-first;version="1.0",
org.jdom.*;-split-package:=merge-first;version="1.0",
org.jdom.input.*;-split-package:=merge-first;version="1.0",
org.jdom.output.*;-split-package:=merge-first;version="1.0",
org.apache.xerces.parsers.*;-split-package:=merge-first,
com.gestalt.soakit.core.*;-split-package;=merge-first,
<!--
javax.*;-split-package:=merge-first,
javax.jws.*;-split-package:=merge-first,
javax.xml.bind;-split-package:=merge-first,
javax.annotation;-split-package:=merge-first,
javax.xml.soap;-split-package:=merge-first,
javax.xml.stream;-split-package:=merge-first,
javax.activation;-split-package:=merge-first,
-->
</Export-Package>
</instructions>
</configuration>
</plugin>
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<projectNameTemplate>[artifactId]-[version]</projectNameTemplate>
<wtpmanifest>true</wtpmanifest>
<wtpapplicationxml>true</wtpapplicationxml>
<wtpversion>2.0</wtpversion>
<manifest>${basedir}/src/main/resources/META-INF/MANIFEST.MF</manifest>
</configuration>
</plugin>
-->
</plugins>
<extensions>
</extensions>
</build>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]