Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 225884 Details for
Bug 381057
CBI should be able to generate the API tools description
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Part I.
0001-Generate-.apibuild.xml-when-the-project-has-api-buil.patch (text/plain), 6.73 KB, created by
Krzysztof Daniel
on 2013-01-21 08:43:36 EST
(
hide
)
Description:
Part I.
Filename:
MIME Type:
Creator:
Krzysztof Daniel
Created:
2013-01-21 08:43:36 EST
Size:
6.73 KB
patch
obsolete
>From d7cd6edcd76f962bfb789db29ad56b43ddff25c3 Mon Sep 17 00:00:00 2001 >From: Krzysztof Daniel <kdaniel@redhat.com> >Date: Thu, 10 Jan 2013 14:11:55 +0100 >Subject: [PATCH] Generate .apibuild.xml when the project has api build nature. > >--- > maven-cbi-plugin/pom.xml | 2 +- > .../eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java | 155 +++++++++++++++++++++ > 2 files changed, 156 insertions(+), 1 deletion(-) > create mode 100644 maven-cbi-plugin/src/main/java/org/eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java > >diff --git a/maven-cbi-plugin/pom.xml b/maven-cbi-plugin/pom.xml >index 94574f2..2f99134 100644 >--- a/maven-cbi-plugin/pom.xml >+++ b/maven-cbi-plugin/pom.xml >@@ -15,7 +15,7 @@ > <modelVersion>4.0.0</modelVersion> > <groupId>org.eclipse.cbi</groupId> > <artifactId>maven-cbi-plugin</artifactId> >- <version>0.0.1-SNAPSHOT</version> >+ <version>0.0.2-SNAPSHOT</version> > <packaging>maven-plugin</packaging> > > <properties> >diff --git a/maven-cbi-plugin/src/main/java/org/eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java b/maven-cbi-plugin/src/main/java/org/eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java >new file mode 100644 >index 0000000..d5e8efa >--- /dev/null >+++ b/maven-cbi-plugin/src/main/java/org/eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java >@@ -0,0 +1,155 @@ >+package org.eclipse.tycho.pomgenerator; >+ >+import java.io.File; >+import java.io.FileInputStream; >+import java.io.FileOutputStream; >+import java.io.IOException; >+import java.io.InputStream; >+import java.io.OutputStreamWriter; >+import java.io.Writer; >+import java.io.BufferedWriter; >+import java.io.FileWriter; >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.Iterator; >+import java.util.LinkedHashMap; >+import java.util.LinkedHashSet; >+import java.util.List; >+import java.util.Map; >+import java.util.Map.Entry; >+import java.util.Set; >+import java.util.StringTokenizer; >+ >+import javax.xml.parsers.DocumentBuilderFactory; >+import javax.xml.parsers.DocumentBuilder; >+import org.w3c.dom.Document; >+import org.w3c.dom.NodeList; >+import org.w3c.dom.Node; >+import org.w3c.dom.Element; >+import org.xml.sax.SAXException; >+ >+import org.apache.maven.artifact.Artifact; >+import org.apache.maven.model.Build; >+import org.apache.maven.model.Model; >+import org.apache.maven.model.Parent; >+import org.apache.maven.model.Plugin; >+import org.apache.maven.model.io.xpp3.MavenXpp3Reader; >+import org.apache.maven.model.io.xpp3.MavenXpp3Writer; >+import org.apache.maven.plugin.AbstractMojo; >+import org.apache.maven.plugin.MojoExecutionException; >+import org.apache.maven.plugin.MojoFailureException; >+import org.apache.maven.project.MavenProject; >+import org.codehaus.plexus.util.ReaderFactory; >+import org.codehaus.plexus.util.xml.XmlStreamReader; >+import org.codehaus.plexus.util.xml.Xpp3Dom; >+import org.codehaus.plexus.util.xml.Xpp3DomBuilder; >+import org.codehaus.plexus.util.xml.pull.XmlPullParserException; >+import org.eclipse.osgi.framework.adaptor.FilePath; >+import org.eclipse.osgi.service.resolver.BundleDescription; >+import org.eclipse.osgi.service.resolver.State; >+import org.eclipse.tycho.ArtifactDescriptor; >+import org.eclipse.tycho.ArtifactKey; >+import org.eclipse.tycho.core.TychoProject; >+import org.eclipse.tycho.core.osgitools.BundleReader; >+import org.eclipse.tycho.core.osgitools.DefaultArtifactKey; >+import org.eclipse.tycho.core.osgitools.DefaultReactorProject; >+import org.eclipse.tycho.core.osgitools.DependencyComputer; >+import org.eclipse.tycho.core.osgitools.EquinoxResolver; >+import org.eclipse.tycho.core.osgitools.OsgiManifest; >+import org.eclipse.tycho.core.osgitools.OsgiManifestParserException; >+import org.eclipse.tycho.core.osgitools.targetplatform.DefaultTargetPlatform; >+import org.eclipse.tycho.model.Feature; >+import org.eclipse.tycho.model.FeatureRef; >+import org.eclipse.tycho.model.PluginRef; >+import org.eclipse.tycho.model.UpdateSite; >+import org.osgi.framework.BundleException; >+ >+/** >+ * @goal generate-api-build-xml >+ * @phase generate-sources >+ */ >+public class GenerateAPIBuildXMLMojo extends AbstractMojo { >+ >+ private static final String API_BUILD_XML_FILE = ".apibuild.xml"; >+ private static final String API_NATURE = "org.eclipse.pde.api.tools.apiAnalysisNature"; >+ >+ /** >+ * @parameter default-value="${project}" >+ * @required >+ * @readonly >+ */ >+ protected MavenProject project; >+ >+ /** >+ * @component role="org.eclipse.tycho.core.TychoProject" >+ */ >+ private Map<String, TychoProject> projectTypes; >+ >+ public void execute() throws MojoExecutionException, MojoFailureException { >+ File dotProject = new File(project.getBasedir(), ".project"); >+ if (!dotProject.exists()) { >+ // no .project >+ return; >+ } >+ if (dotProjectContainsApiNature(dotProject)) { >+ generateBuildXML(); >+ } >+ } >+ >+ private boolean dotProjectContainsApiNature(File f){ >+ try{ >+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); >+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); >+ Document doc = dBuilder.parse(f); >+ doc.getDocumentElement().normalize(); >+ NodeList natures = doc.getElementsByTagName("nature"); >+ for (int i = 0; i < natures.getLength(); i++) { >+ >+ Node nature = natures.item(i); >+ String sNature = nature.getTextContent(); >+ if( sNature != null){ >+ if(API_NATURE.equals(sNature.trim())){ >+ return true; >+ } >+ } >+ } >+ } catch (Exception e){ >+ e.printStackTrace(); >+ return false; >+ } >+ return false; >+ } >+ >+ private void generateBuildXML(){ >+ try { >+ System.out.println("Generating .apibuild.xml"); >+ File dotApiBuildXML = new File(project.getBasedir(), API_BUILD_XML_FILE); >+ BufferedWriter bw = new BufferedWriter(new FileWriter(dotApiBuildXML)); >+ bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); >+ bw.write("<project name=\"apigen\" default=\"apigen\">\n"); >+ bw.write(" <target name=\"apigen\">\n"); >+ bw.write(" <apitooling.apigeneration \n"); >+ bw.write(" projectname=\"" + calculateName() + "\"\n"); >+ bw.write(" project=\"" + project.getBasedir() + "\"\n"); >+ bw.write(" binary=\"" + project.getBuild().getDirectory() + "\"\n"); >+ bw.write(" target=\"" + project.getBuild().getDirectory() + "/classes\"\n"); >+ bw.write(" debug=\"true\"\n"); >+ bw.write(" \n"); >+ bw.write(" />\n"); >+ bw.write(" </target>\n"); >+ bw.write("</project>\n"); >+ bw.flush(); >+ } catch (IOException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ private String calculateName() { >+ TychoProject projectType = projectTypes.get(project.getPackaging()); >+ ArtifactKey artifactKey = projectType >+ .getArtifactKey(DefaultReactorProject.adapt(project)); >+ String symbolicName = artifactKey.getId(); >+ String version = artifactKey.getVersion(); >+ return symbolicName + "_" + version; >+ } >+} >-- >1.8.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 381057
:
221047
|
221048
|
225435
|
225436
|
225884
|
225885
|
225994
|
227124
|
227935
|
227936