Preserve license URLs
diff --git a/src/main/groovy/m4e/InstallCmd.groovy b/src/main/groovy/m4e/InstallCmd.groovy
index de5731f..7d9331a 100644
--- a/src/main/groovy/m4e/InstallCmd.groovy
+++ b/src/main/groovy/m4e/InstallCmd.groovy
@@ -328,6 +328,11 @@
}
boolean isSingleton
+ String licenseURL
+
+ Map licenseNameMap = [
+ 'http://www.apache.org/licenses/LICENSE-2.0.txt': 'Apache 2'
+ ]
void examineManifest() {
// println manifest.entries
@@ -345,6 +350,11 @@
groupId = artifactIdToGroupId( artifactId )
isSingleton = ( 'true' == attrs[0].getDirective( Constants.SINGLETON_DIRECTIVE ) )
+
+ attrs = parseAttribute( 'Bundle-License' )
+ if( attrs && attrs.size() == 1 ) {
+ licenseURL = attrs[0].value
+ }
}
void unpackNestedJar( String nestedJarPath, File jarFile ) {
@@ -375,18 +385,20 @@
return parts[0..n].join( '.' )
}
+ String indent = ' '
+
void createPom( Writer writer ) {
statistics.pomCount ++
writer << '<?xml version="1.0" encoding="UTF-8"?>\n'
writer << '<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"\n'
- writer << ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n'
- writer << ' <modelVersion>4.0.0</modelVersion>\n'
+ writer << indent*2 << 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n'
+ writer << indent << '<modelVersion>4.0.0</modelVersion>\n'
- writer << ' <groupId>' << groupId << '</groupId>\n'
- writer << ' <artifactId>' << artifactId << '</artifactId>\n'
- writer << ' <version>' << version << '</version>\n'
+ writer << indent << '<groupId>' << groupId << '</groupId>\n'
+ writer << indent << '<artifactId>' << artifactId << '</artifactId>\n'
+ writer << indent << '<version>' << version << '</version>\n'
String name = manifest.attr.getValue( Constants.BUNDLE_NAME )
if( name ) {
@@ -394,7 +406,7 @@
name = expand( name )
}
- writer << ' <name>' << escape( name ) << '</name>\n'
+ writer << indent << '<name>' << escape( name ) << '</name>\n'
}
String description = manifest.attr.getValue( Constants.BUNDLE_DESCRIPTION )
@@ -406,11 +418,26 @@
description = ''
}
- writer << ' <description>' << escape( description ) << ( description ? "\n " : "" ) << 'Converted with MT4E ' << Tool.VERSION << '</description>\n'
+ writer << indent << '<description>' << escape( description ) << ( description ? "\n " : "" ) << 'Converted with MT4E ' << Tool.VERSION << '</description>\n'
String url = manifest.attr.getValue( Constants.BUNDLE_DOCURL )
if( url ) {
- writer << ' <url>' << escape( url ) << '</url>\n'
+ writer << indent << '<url>' << escape( url ) << '</url>\n'
+ }
+
+ if( licenseURL ) {
+ writer << indent << '<licenses>\n'
+ writer << indent*2 << '<license>\n'
+
+ String licName = licenseNameMap[ licenseURL ]
+ if( licName ) {
+ writer << indent*3 << '<name>' << escape( licName ) << '</name>\n'
+ }
+
+ writer << indent*3 << '<url>' << escape( licenseURL ) << '</url>\n'
+
+ writer << indent*2 << '</license>\n'
+ writer << indent << '</licenses>\n'
}
addProperties( writer )
@@ -434,7 +461,7 @@
return
}
- writer << ' <properties>\n'
+ writer << indent << '<properties>\n'
if( imports ) {
String value = imports.join( ',' )
@@ -450,22 +477,22 @@
addProperty( writer, Pom.IS_SINGLETON_PROPERTY, 'true' )
}
- writer << ' </properties>\n'
+ writer << indent << '</properties>\n'
}
void addProperty( Writer writer, String name, String value ) {
- writer << ' <' << name << '>' << escape( value ) << '</' << name << '>\n'
+ writer << indent*2 << '<' << name << '>' << escape( value ) << '</' << name << '>\n'
}
void addDependencies( Writer writer, ManifestElement[] requiredBundles ) {
- writer << ' <dependencies>\n'
+ writer << indent << '<dependencies>\n'
requiredBundles.each {
addDependency( writer, it )
}
- writer << ' </dependencies>\n'
+ writer << indent << '</dependencies>\n'
}
void addDependency( Writer writer, ManifestElement dep ) {
@@ -481,17 +508,17 @@
String groupId = artifactIdToGroupId( artifactId )
- writer << ' <dependency>\n'
- writer << ' <groupId>' << groupId << '</groupId>\n'
- writer << ' <artifactId>' << artifactId << '</artifactId>\n'
- writer << ' <version>' << version << '</version>\n'
+ writer << indent*2 << '<dependency>\n'
+ writer << indent*3 << '<groupId>' << groupId << '</groupId>\n'
+ writer << indent*3 << '<artifactId>' << artifactId << '</artifactId>\n'
+ writer << indent*3 << '<version>' << version << '</version>\n'
String resolution = dep.getDirective( Constants.RESOLUTION_DIRECTIVE )
if( Constants.RESOLUTION_OPTIONAL == resolution ) {
- writer << ' <optional>true</optional>\n'
+ writer << indent*3 << '<optional>true</optional>\n'
}
- writer << ' </dependency>\n'
+ writer << indent*2 << '</dependency>\n'
}
Properties pluginProperties
diff --git a/src/test/groovy/m4e/BundleConverterTest.groovy b/src/test/groovy/m4e/BundleConverterTest.groovy
index 0ffd071..c84a4ad 100644
--- a/src/test/groovy/m4e/BundleConverterTest.groovy
+++ b/src/test/groovy/m4e/BundleConverterTest.groovy
@@ -84,6 +84,12 @@
<description>Guice is a lightweight dependency injection framework for Java 5 and above
Converted with MT4E 0.13 (27.04.2012)</description>
<url>http://code.google.com/p/google-guice/</url>
+ <licenses>
+ <license>
+ <name>Apache 2</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ </license>
+ </licenses>
<properties>
<mt4e.osgi.importPackage>javax.inject;version="1.0.0"</mt4e.osgi.importPackage>
<mt4e.osgi.exportPackage>com.google.inject;version="1.3";uses:="com.google.inject, com.google.inject.binder, com.google.inject.spi, com.google.inject.matcher, javax.inject",com.google.inject.binder;version="1.3";uses:="com.google.inject",com.google.inject.internal;version="1.3";x-internal:="true",com.google.inject.matcher;version="1.3",com.google.inject.name;version="1.3";uses:="com.google.inject",com.google.inject.spi;version="1.3";uses:="com.google.inject.binder,com.google.inject.matcher,com.google.inject",com.google.inject.util;version="1.3";uses:="com.google.inject.util, com.google.inject.spi, javax.inject, com.google.inject"</mt4e.osgi.exportPackage>