Index: src/main/java/org/apache/maven/archiver/MavenArchiver.java =================================================================== --- src/main/java/org/apache/maven/archiver/MavenArchiver.java (revision 1037536) +++ src/main/java/org/apache/maven/archiver/MavenArchiver.java (revision ) @@ -48,7 +48,7 @@ /** * @author Emmanuel Venisse - * @version $Revision: 1037536 $ $Date: 2010-11-21 20:40:03 +0100 (So, 21 Nov 2010) $ + * @version $Revision: 1037536 $ $Date: 2010-11-21 20:40:03 +0100 (Sun, 21 Nov 2010) $ */ public class MavenArchiver { @@ -199,6 +199,7 @@ List artifacts = project.getRuntimeClasspathElements(); String classpathPrefix = config.getClasspathPrefix(); + String classpathPrefixThirdParty = config.getClasspathPrefixThirdParty(); String layoutType = config.getClasspathLayoutType(); String layout = config.getCustomClasspathLayout(); @@ -215,8 +216,15 @@ { classpath.append( " " ); } + if (artifact != null && artifact.getGroupId().equals(project.getGroupId())){ - classpath.append( classpathPrefix ); + classpath.append( classpathPrefix ); - + } else { + if (classpathPrefixThirdParty.length()>0){ + classpath.append( classpathPrefixThirdParty ); + } else { + classpath.append( classpathPrefix ); + } + } // NOTE: If the artifact or layout type (from config) is null, give up and use the file name by itself. if ( artifact == null || layoutType == null ) { Index: src/main/java/org/apache/maven/archiver/ManifestConfiguration.java =================================================================== --- src/main/java/org/apache/maven/archiver/ManifestConfiguration.java (revision 697981) +++ src/main/java/org/apache/maven/archiver/ManifestConfiguration.java (revision ) @@ -46,11 +46,17 @@ private boolean addExtensions; /** - * This gets prefixed to all classpath entries. + * This gets prefixed to all classpath entries. Might be overriden by classpathPrefixThirdParty for third + * party libraries. */ private String classpathPrefix = ""; /** + * This gets prefixed to all third party classpath entries. + */ + private String classpathPrefixThirdParty = ""; + + /** * Add default implementation entries if this is an extension specification. * * @since 2.1 @@ -153,6 +159,11 @@ this.classpathPrefix = classpathPrefix; } + public void setClasspathPrefixThirdParty( String classpathPrefixThirdParty ) + { + this.classpathPrefixThirdParty = classpathPrefixThirdParty; + } + public void setMainClass( String mainClass ) { this.mainClass = mainClass; @@ -163,9 +174,8 @@ this.packageName = packageName; } - public String getClasspathPrefix() - { - String cpp = classpathPrefix.replaceAll( "\\\\", "/" ); + private String normalizeClasspathPrefix(String prefix){ + String cpp = prefix.replaceAll( "\\\\", "/" ); if ( cpp.length() != 0 && !cpp.endsWith( "/" ) ) { @@ -175,6 +185,16 @@ return cpp; } + public String getClasspathPrefix() + { + return normalizeClasspathPrefix(classpathPrefix); + } + + public String getClasspathPrefixThirdParty() + { + return normalizeClasspathPrefix(classpathPrefixThirdParty); + } + /** * Return the type of layout to use when formatting classpath entries. * Default is taken from the constant CLASSPATH_LAYOUT_TYPE_SIMPLE, declared