You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by mc...@apache.org on 2008/02/19 10:49:44 UTC
svn commit: r629050 - in /felix/trunk/bundleplugin/src/main:
java/org/apache/felix/bundleplugin/AntPlugin.java resources/build.xml
resources/maven-build.bnd
Author: mcculls
Date: Tue Feb 19 01:49:41 2008
New Revision: 629050
URL: http://svn.apache.org/viewvc?rev=629050&view=rev
Log:
FELIX-247: add bundle:ant goal, which creates a custom Ant script to build the bundle (run ant:ant first)
Added:
felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java (with props)
Removed:
felix/trunk/bundleplugin/src/main/resources/maven-build.bnd
Modified:
felix/trunk/bundleplugin/src/main/resources/build.xml
Added: felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java?rev=629050&view=auto
==============================================================================
--- felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java (added)
+++ felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java Tue Feb 19 01:49:41 2008
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.bundleplugin;
+
+
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
+
+import aQute.lib.osgi.Builder;
+import aQute.lib.osgi.Jar;
+
+
+/**
+ * Generate Ant script to create the bundle (you should run ant:ant first).
+ *
+ * @goal ant
+ * @requiresDependencyResolution runtime
+ * @description generate Ant script to create the bundle
+ */
+public class AntPlugin extends BundlePlugin
+{
+ static final String BUILD_XML = "/build.xml";
+ static final String BUILD_BND = "/maven-build.bnd";
+
+
+ protected void execute( MavenProject currentProject, Map originalInstructions, Properties properties,
+ Jar[] classpath ) throws MojoExecutionException
+ {
+ final String artifactId = getProject().getArtifactId();
+ final String baseDir = getProject().getBasedir().getPath();
+
+ try
+ {
+ // assemble bundle as usual, but don't save it - this way we have all the instructions we need
+ Builder builder = buildOSGiBundle( currentProject, originalInstructions, properties, classpath );
+ Properties bndProperties = builder.getProperties();
+
+ // cleanup and remove all non-strings from the builder properties
+ for ( Iterator i = bndProperties.values().iterator(); i.hasNext(); )
+ {
+ if ( !( i.next() instanceof String ) )
+ {
+ i.remove();
+ }
+ }
+
+ // save the BND generated bundle to the same output directory that maven uses
+ bndProperties.setProperty( "-output", "${maven.build.dir}/${maven.build.finalName}.jar" );
+
+ OutputStream out = new FileOutputStream( baseDir + BUILD_BND );
+ bndProperties.store( out, " Merged BND Instructions" );
+ IOUtil.close( out );
+
+ // modify build template
+ String buildXml = IOUtil.toString( getClass().getResourceAsStream( BUILD_XML ) );
+ buildXml = StringUtils.replace( buildXml, "ARTIFACT_ID", artifactId );
+
+ FileUtils.fileWrite( baseDir + BUILD_XML, buildXml );
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "Problem creating Ant script", e );
+ }
+
+ getLog().info( "Wrote Ant bundle project for " + artifactId + " to " + baseDir );
+ }
+}
Propchange: felix/trunk/bundleplugin/src/main/java/org/apache/felix/bundleplugin/AntPlugin.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: felix/trunk/bundleplugin/src/main/resources/build.xml
URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/resources/build.xml?rev=629050&r1=629049&r2=629050&view=diff
==============================================================================
--- felix/trunk/bundleplugin/src/main/resources/build.xml (original)
+++ felix/trunk/bundleplugin/src/main/resources/build.xml Tue Feb 19 01:49:41 2008
@@ -20,7 +20,7 @@
<echo message="Please run: $ant -projecthelp"/>
</target>
- <property name="bnd.version" value="BND_VERSION"/>
+ <property name="bnd.version" value="0.0.238"/>
<target name="get-bnd"
depends="test-offline"
@@ -42,7 +42,7 @@
<target name="package" depends="compile,test,get-bnd" description="Package the bundle">
<pathconvert property="bnd.classpath" refid="build.classpath" pathsep=","/>
- <bnd files="maven-build.bnd" classpath="${bnd.classpath}"/>
+ <bnd files="maven-build.bnd" classpath="${maven.build.outputDir},${bnd.classpath}"/>
</target>
</project>