Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 381057 | Differences between
and this patch

Collapse All | Expand All

(-)a/maven-cbi-plugin/pom.xml (-1 / +1 lines)
Lines 15-21 Link Here
15
  <modelVersion>4.0.0</modelVersion>
15
  <modelVersion>4.0.0</modelVersion>
16
  <groupId>org.eclipse.cbi</groupId>
16
  <groupId>org.eclipse.cbi</groupId>
17
  <artifactId>maven-cbi-plugin</artifactId>
17
  <artifactId>maven-cbi-plugin</artifactId>
18
  <version>0.0.1-SNAPSHOT</version>
18
  <version>0.0.2-SNAPSHOT</version>
19
  <packaging>maven-plugin</packaging>
19
  <packaging>maven-plugin</packaging>
20
20
21
  <properties>
21
  <properties>
(-)a/maven-cbi-plugin/src/main/java/org/eclipse/cbi/mojo/GenerateAPIBuildXMLMojo.java (-1 / +155 lines)
Added Link Here
0
- 
1
package org.eclipse.tycho.pomgenerator;
2
3
import java.io.File;
4
import java.io.FileInputStream;
5
import java.io.FileOutputStream;
6
import java.io.IOException;
7
import java.io.InputStream;
8
import java.io.OutputStreamWriter;
9
import java.io.Writer;
10
import java.io.BufferedWriter;
11
import java.io.FileWriter;
12
import java.util.ArrayList;
13
import java.util.Collections;
14
import java.util.Iterator;
15
import java.util.LinkedHashMap;
16
import java.util.LinkedHashSet;
17
import java.util.List;
18
import java.util.Map;
19
import java.util.Map.Entry;
20
import java.util.Set;
21
import java.util.StringTokenizer;
22
23
import javax.xml.parsers.DocumentBuilderFactory;
24
import javax.xml.parsers.DocumentBuilder;
25
import org.w3c.dom.Document;
26
import org.w3c.dom.NodeList;
27
import org.w3c.dom.Node;
28
import org.w3c.dom.Element;
29
import org.xml.sax.SAXException;
30
31
import org.apache.maven.artifact.Artifact;
32
import org.apache.maven.model.Build;
33
import org.apache.maven.model.Model;
34
import org.apache.maven.model.Parent;
35
import org.apache.maven.model.Plugin;
36
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
37
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
38
import org.apache.maven.plugin.AbstractMojo;
39
import org.apache.maven.plugin.MojoExecutionException;
40
import org.apache.maven.plugin.MojoFailureException;
41
import org.apache.maven.project.MavenProject;
42
import org.codehaus.plexus.util.ReaderFactory;
43
import org.codehaus.plexus.util.xml.XmlStreamReader;
44
import org.codehaus.plexus.util.xml.Xpp3Dom;
45
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
46
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
47
import org.eclipse.osgi.framework.adaptor.FilePath;
48
import org.eclipse.osgi.service.resolver.BundleDescription;
49
import org.eclipse.osgi.service.resolver.State;
50
import org.eclipse.tycho.ArtifactDescriptor;
51
import org.eclipse.tycho.ArtifactKey;
52
import org.eclipse.tycho.core.TychoProject;
53
import org.eclipse.tycho.core.osgitools.BundleReader;
54
import org.eclipse.tycho.core.osgitools.DefaultArtifactKey;
55
import org.eclipse.tycho.core.osgitools.DefaultReactorProject;
56
import org.eclipse.tycho.core.osgitools.DependencyComputer;
57
import org.eclipse.tycho.core.osgitools.EquinoxResolver;
58
import org.eclipse.tycho.core.osgitools.OsgiManifest;
59
import org.eclipse.tycho.core.osgitools.OsgiManifestParserException;
60
import org.eclipse.tycho.core.osgitools.targetplatform.DefaultTargetPlatform;
61
import org.eclipse.tycho.model.Feature;
62
import org.eclipse.tycho.model.FeatureRef;
63
import org.eclipse.tycho.model.PluginRef;
64
import org.eclipse.tycho.model.UpdateSite;
65
import org.osgi.framework.BundleException;
66
67
/**
68
 * @goal generate-api-build-xml
69
 * @phase generate-sources
70
 */
71
public class GenerateAPIBuildXMLMojo extends AbstractMojo {
72
	
73
	private static final String API_BUILD_XML_FILE = ".apibuild.xml";
74
	private static final String API_NATURE = "org.eclipse.pde.api.tools.apiAnalysisNature";
75
	
76
    /**
77
     * @parameter default-value="${project}"
78
     * @required
79
     * @readonly
80
     */
81
    protected MavenProject project;
82
    
83
    /**
84
     * @component role="org.eclipse.tycho.core.TychoProject"
85
     */
86
    private Map<String, TychoProject> projectTypes;
87
    
88
	public void execute() throws MojoExecutionException, MojoFailureException {
89
		File dotProject = new File(project.getBasedir(), ".project");
90
		if (!dotProject.exists()) {
91
			// no .project
92
			return;
93
		}
94
		if (dotProjectContainsApiNature(dotProject)) {
95
			generateBuildXML();
96
		}
97
	}
98
	
99
	private boolean dotProjectContainsApiNature(File f){
100
		try{
101
			DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
102
			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
103
			Document doc = dBuilder.parse(f);
104
			doc.getDocumentElement().normalize();
105
			NodeList natures = doc.getElementsByTagName("nature");
106
			for (int i = 0; i < natures.getLength(); i++) {
107
				 
108
				   Node nature = natures.item(i);
109
				   String sNature = nature.getTextContent();
110
				   if( sNature != null){
111
					   if(API_NATURE.equals(sNature.trim())){
112
						   return true;
113
					   }
114
				   }
115
			}
116
		} catch (Exception e){
117
			e.printStackTrace();
118
			return false;
119
		}
120
		return false;
121
	}
122
	
123
	private void generateBuildXML(){
124
		try {
125
			System.out.println("Generating .apibuild.xml");
126
			File dotApiBuildXML = new File(project.getBasedir(), API_BUILD_XML_FILE);
127
			BufferedWriter bw = new BufferedWriter(new FileWriter(dotApiBuildXML));
128
			bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
129
			bw.write("<project name=\"apigen\" default=\"apigen\">\n");
130
			bw.write("  <target name=\"apigen\">\n");
131
			bw.write("  	<apigeneration    \n");
132
			bw.write("      	projectname=\"" + calculateName() + "\"\n");
133
			bw.write("      	project=\"" + project.getBasedir() + "\"\n");
134
			bw.write("      	binary=\"" + project.getBuild().getDirectory() + "\"\n");
135
			bw.write("      	target=\"" + project.getBasedir() + "\"\n");
136
			bw.write("      	debug=\"true\"\n");
137
			bw.write("      \n");
138
			bw.write("      />\n");
139
			bw.write("  </target>\n");
140
			bw.write("</project>\n");
141
			bw.flush();
142
		} catch (IOException e) {
143
			e.printStackTrace();
144
		}
145
	}
146
	
147
	private String calculateName() {
148
		TychoProject projectType = projectTypes.get(project.getPackaging());
149
		ArtifactKey artifactKey = projectType
150
				.getArtifactKey(DefaultReactorProject.adapt(project));
151
		String symbolicName = artifactKey.getId();
152
		String version = artifactKey.getVersion();
153
		return symbolicName + "_" + version;
154
	}
155
}

Return to bug 381057