Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Hello XML World Example (Buckminster)
< To: Buckminster Project
This examples shows several Buckminster features in action. Here is an overview of what is going on:
- The A component is called org.demo.hello.xml.world
- It lives in a CVS repository
- It is an Eclipse plugin - it has some meta data
- A has a dependency on B
- The B component is called org.demo.xml.provider
- It lives in a CVS repository
- It is an Eclipse plugin - it has some meta data
- It requires two jars; the jar in component D, and a jar that is built by component C.
- Component C is called org.demo.worlds
- It lives in a CVS repository
- Although it is an Eclipse project, it is not an Eclipse plugin.
- Component D is a sax parser called se.tada.util.sax
- It lives in binary form in the maven repository at Ibiblio
To run the example, use the File > Open dialog in Eclipse, and enter this URL:
That will start the Buckminster materialization of the project.
The CQUERY
The CQuery looks like this:
<?xml version="1.0" encoding="UTF-8"?> <cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="http://www.eclipse.org/buckminster/samples/rmaps/demo.rmap"> <cq:rootRequest name="org.demo.hello.xml.world" category="plugin" versionType="OSGi"/> </cq:componentQuery>
This is what the XML in the CQUERY means:
- The first three lines are the usual XML incantations - this is XML, and this is the syntax of the XML - i.e. CQuery-1.0 and the namespace is called "cq".
- Next line declares where the resourcemap to use when resolving components is found (we will look at the resource map next).
- Next line states that the wanted (root) component is called org.demo.hello.xml.world, that is is a plugin and that it follows the OSGi versioning scheme.
For more details see CQUERY
The RMAP
This is what the RMAP looks like:
<?xml version="1.0" encoding="UTF-8"?> <rm:rmap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rm="http://www.eclipse.org/buckminster/RMap-1.0" xmlns:mp="http://www.eclipse.org/buckminster/MavenProvider-1.0" xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"> <rm:searchPath name="default"> <rm:provider readerType="cvs" componentType="eclipse-project" mutable="true" source="true"> <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/technology,org.eclipse.buckminster/org.eclipse.buckminster/demo/{0}"> <bc:propertyRef key="buckminster.component" /> </rm:uri> </rm:provider> </rm:searchPath> <rm:searchPath name="maven"> <rm:provider xsi:type="mp:MavenProvider" readerType="maven" componentType="maven" mutable="false" source="false"> <rm:uri format="http://www.ibiblio.org/maven"/> <mp:mappings> <mp:entry name="se.tada.util.sax" groupId="se.tada" artifactId="tada-sax"/> </mp:mappings> </rm:provider> </rm:searchPath> <rm:locator searchPathRef="maven" pattern="^se\.tada\..*" /> <rm:locator searchPathRef="default" pattern="^org\.demo\..*" /> </rm:rmap>
This is what the RMAP XML means:
- The 6 first lines declares the name spaces and syntax of the rmap and the repository providers needed.
- Below that you see two major elements declaring search paths, the first is called default, and the second is called maven.
- Continue down and you see two locator declarations...
- the first states that if a component name starts with se.tada. then the maven search path should be used.
- and the second locator states that if the name starts with org.demo. then the default path should be used.
- Back to the paths:
- The default path:
- The default path declares that the repository is in CVS and that what we find is an eclipse project
- We do not need to commit changes back (mutable=false), and we do not want source (source=false).
- The URI to the CVS repository is stated next
- This URI ends with the name of the component. This name is obtained from the preset property buckminster.component
- The maven path:
- The maven path declares that it uses a maven provider and a reader type of maven and that the component type is also a maven component. Further the mutable=false says that we are not interested in comitting any changes back to the repository, and source=false says that we are not interested in source.
- A URI to the maven repository at Ibiblio is declared
- A mapping that translates the component name into what the actual file on Ibiblio is called is then declared (i.e. mapping se.tada.util.sax to tada-sax).
- The default path:
Describe what the demo does