Maven Shared Components

MANEFEST class path attribute uses repository style name despite setting classpathMavenRepositoryLayout to false

Details

  • Type: Bug Bug
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: maven-archiver
  • Labels:
    None
  • Environment:
    Ubuntu 9.04 64bit
  • Number of attachments :
    2

Description

I ran into this while porting a windows maven build to linux. Thanks to all your guy's work is was very error free.

However I did run into one problem where I was getting class not found exceptions for ejb.

After digging in deep I found our MANIFEST.MF file looked something like this:
Class-Path: someintuitlib-ejb-1.0-20090513.083158-9-client.jar

As opposed to windows where it looked like:
Class-Path: someintuitlib-ejb-1.0-SNAPSHOT-client.jar

When the jars are wrapped up in linux they use the someintuitlib-ejb-1.0-SNAPSHOT-client.jar for the file name. Thus the classpath fails and a class not found exception results.

This seems to be specific to linux and ejb relying on SNAPSHOTs built on another machine and uploaded to a shared repository. There are other SNAPSHOTs in the dependency list and their names are used correctly. Those SNAPSHOTs are built locally as part of the build. Thus I think it is specific to SNAPSHOTs built remotely and uploaded to a shared SNAPSHOT repository.

I have supplied a sample pom.xml that may generate the bug but I can not test it out as I do not have a remote repository that I can push SNAPSHOTs to.

Activity

Hide
Dennis Lundberg added a comment -

The parameter classpathMavenRepositoryLayout specifies if the Class-Path of the manifest should contain a Maven repository like path or not. It doesn't affect the name of the file in the manifest. See
http://maven.apache.org/shared/maven-archiver/#class_manifest

Show
Dennis Lundberg added a comment - The parameter classpathMavenRepositoryLayout specifies if the Class-Path of the manifest should contain a Maven repository like path or not. It doesn't affect the name of the file in the manifest. See http://maven.apache.org/shared/maven-archiver/#class_manifest
Hide
Dennis Lundberg added a comment -

I modified your pom.xml slightly and added a public SNAPSHOT repository. See attached sample project.

Then I tried it on Windows, and I get the following Class-Path entry in the MANIFEST.MF:

Class-Path: commons-math-2.0-20090723.185718-6.jar
Show
Dennis Lundberg added a comment - I modified your pom.xml slightly and added a public SNAPSHOT repository. See attached sample project. Then I tried it on Windows, and I get the following Class-Path entry in the MANIFEST.MF:
Class-Path: commons-math-2.0-20090723.185718-6.jar
Hide
Mike Power added a comment -

You are right I get the same behaviour on both my windows and linux. Thanks for the snapshot repsitory. I'll do some more triage and see if I can narrow the bug down. I'll upload a new project once I figure out what is going on.

Show
Mike Power added a comment - You are right I get the same behaviour on both my windows and linux. Thanks for the snapshot repsitory. I'll do some more triage and see if I can narrow the bug down. I'll upload a new project once I figure out what is going on.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated: