# Acceleo Project definition and configuration

First of all, an Acceleo project is an Eclipse plug-in project and as such an OSGI bundle too. This concept is important because strongly encourage you to follow Eclipse conventions when managing and Acceleo project. An Acceleo project should follow the same naming convention as an Eclipse plug-in project:
<domain_url>.<project_name>.<metamodel_name>.gen.<target> (ex: org.eclipse.acceleo.uml.gen.java).
You can of course adopt another kind of naming convention but try to keep the spirit of Acceleo naming convention.

The name of the project is directly used to determine the name of several elements starting with the name of the root package of the Acceleo modules (one of the reason why "My Generation Project" would create problems).

# Dependencies what do you need?

An Acceleo project, being an Eclipse plug-in project, handles its dependencies thanks to OSGI. Don't be scared, there is no need to be an OSGI expert to manage dependencies. All Acceleo projects contain and file named MANIFEST.MF in the META-INF folder. This file should be opened by default by the Plug-in Manifest Editor. Once open, you can go to the "dependencies" tab to add a dependency to another Eclipse plug-in required for your generator. One of the first plug-in required is the plug-in containing your meta-model. If you are creating a generator using UML models, you need to referenced the UML meta-model, since it is located in the plug-in "org.eclipse.uml2.uml", you need to find or add the dependency to "org.eclipse.uml2.uml" in the dependency tab of the MANIFEST.MF of your generator.

You also need to register your meta-model in the Java class generated by the entry point of your generator. Most of the time, Acceleo can compute the registration required but sometime you have to do it manually, you can have a look at the stand alone section of the documentation for more information on package registration.

If you want to use multiple meta-models related one to the others, for example a meta-model extending another one, the dependencies must be defined in the same way. The project containing the meta-model must define a dependency to EMF since it is required for all EMF-based meta-models (org.eclipse.emf.ecore). The meta-model depending on the first meta-model must have the dependency to the first meta-model setup in its MANIFEST.MF too and the generator must have a dependency to this second meta-model declared in its MANIFEST.MF.