# default layout for a source bundle. contains a manifest,
# about file, plugin.xml and plugin.properties for translation,
# as well as a zip file with source and an about.
default.source.jar = META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties

# default layout for a binary bundle. contains a manifest, 
# about file, and at least one class file or JAR
default.binary.jar = META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties, \
		.*\.(class|jar)$

# default layout for a source bundle. contains a manifest,
# about file, plugin.xml and plugin.properties for translation,
# as well as a zip file with source and an about. Note the
# extra directory entry at the beginning
default.source.zip = ^.*/META-INF/MANIFEST\.MF, \
		^.*/about\.html, \
		^.*/(plugin|bundle)\.properties

# default layout for a binary bundle. contains a manifest, 
# about file, and at least one class file or JAR. Note the
# extra directory entry at the beginning
default.binary.zip = ^.*/META-INF/MANIFEST\.MF, \
		^.*/about\.html, \
		^.*/(plugin|bundle)\.properties, \
		.*\.(class|jar)$

# special case of a code bundle not containing code ?
org.eclipse.wst.xsl.saxon= META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties 
		
# special case with no code: branding bundle
org.eclipse.wst.xsl= META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties 
		
# special case with no code: branding bundle	
org.eclipse.wst.common.fproj.sdk= META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties 	

# special case with no code: branding bundle			
org.eclipse.jst.common.fproj.enablement.jdt.sdk= META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties 	
		
# special case of a bundle with no code		
org.eclipse.jst.ws.creation.ejb.ui= META-INF/MANIFEST\.MF, \
		about\.html, \
		.*(plugin|bundle)\.properties 	
					