hi Owen,
On Tue, Sep 28, 2010 at 10:10 PM, Owen Jacobson
wrote:
> Hi there,
>
> As you may have seen in another thread this morning, someone's asked
> that I upgrade apacheds-maven-plugin to ApacheDS 1.5.7. This hasn't
> gone as smoothly as I had hoped.
>
> ApacheDS 1.5.7's mechanism for populating the schema directory
> involves trawling through every entry in the java.class.path system
> property looking for JARs that contain schema files. The relevant code
> is in org.apache.directory.shared:shared-ldap-schema:0.9.19 . Maven
> doesn't use -classpath (or set java.class.path) when running plugins,
> so this mechanism fails - the only JAR it finds is Maven's classworlds
> bootstrap JAR, which obviously has nothing interesting in it. In fact,
> this mechanism fails for any program that doesn't use the root
> classloader to load ApacheDS.
>
> I think the only universally workable solution is to change the
> packaging for the schema LDIF files so that instead of being scanned,
> each JAR that contains schema files also contains an index file at a
> known location (such as META-INF/apacheds/schema) listing all of the
> schema files in that JAR. Unfortunately, that's a pretty
> labour-intensive solution (it means anyone who adds a schema to
> shared-ldap-schema or related artifacts has to remember to update the
> index as well, or that someone has to tune the build to generate the
> index file. I'm happy to set this up, if it turns out to be the best
> solution. (As you can tell, I'm already fairly adept at extending
> Maven. :)
hmm, though it helps in reduced scan time this again suffers from the
same class loading issue
>
> I see in trunk that ResourceMap now accepts a system property that can
> be set to the locations of JARs to load to skip classpath scanning.
> This doesn't completely help, either, since I'm hesitant to do things
> with global side effects (like set System properties) in the middle of
> a Maven plugin. I can come up with a list of relevant JARs by trawling
> the artfact information in my plugin, so if there were a way to pass
> that list directly to ResourceMap I'd prefer to use that. I can write
> that up as a patch, if you're interested.
yes IMO this is the best way to go, getting the jar name is straight forward.
The artifact name is fixed (atleast till the 2.0 version) i.e
'shared-ldap-schema'
and we can get the version number from the server version the plugin depends on
e.x 0.9.19
>
> I don't think there's a good solution for supporting ApacheDS 1.5.7 in
> apacheds-maven-plugin as it stands, unfortunately. If anyone has any
> thoughts that don't involve temporarily faking the java.class.path
> system property, I'm all ears.
am afraid that we don't have any nice solution to this problem.
The reason I have added that system property based approach is to
let the server work in a servlet environment, cause many people seem
to embed it in such a environment
>
> -o
>
Kiran Ayyagari