# Frequently Asked Questions

# General

How do I change the template used to generate `cruisecontrol.xml` configuration file?
If you specify your own `maven.cruisecontrol.template`, then that will be used instead. If you want to wrap all of your logic up in your own plugin so that you don't have to set each project individually, then add this goal to your plugin's plugin.jelly file:

    <preGoal name="cruisecontrol:configure">
    	<maven:set plugin="maven-cruisecontrol-plugin"
    			property="maven.cruisecontrol.template"
            	value="${plugin.resources}/custom_cruisecontrol.jsl"/>
    </preGoal>

How do I pass in my own values in my cruisecontrol.jsl?
Just setup in your project or plugin your own properties like: myplugin.cruisecontrol.mailhost=localhost and then just use `mailhost=${myplugin.cruisecontrol.mailhost}` in your cruisecontrol.jsl!
I am running Cruise on both a Linux and Window's boxes, how can I be crossplatform?
I specified it like this in my own plugin, this would work in your maven.xml as well:

    <preGoal name="cruisecontrol:validate">
      <ant:echo message="Generating CruiseControl configuration for ${systemScope['os.name']} platform. "/>
      <j:choose>
        <j:when test="${systemScope['os.name'].startsWith('Windows')}">
          <ant:property name="maven.cruisecontrol.home" value="${anite.cruisecontrol.windows.home}"/>
          <ant:property name="anite.cruisecontrol.mavenscript" value="${myplugin.cruisecontrol.windows.mavenscript}"/>
        </j:when>
        <j:otherwise>
          <ant:property name="maven.cruisecontrol.home" value="${myplugin.cruisecontrol.linux.home}"/>
          <ant:property name="myplugin.cruisecontrol.mavenscript" value="${myplugin.cruisecontrol.linux.mavenscript}"/>
        </j:otherwise>
      </j:choose>
      <ant:echo message="maven.cruisecontrol.template:${maven.cruisecontrol.template}"/>
    </preGoal>

How do I setup my project to be built using Cruise Control?

- Install Cruise Control. Preferably on a different machine.
- Checkout the project into the `${maven.cruisecontrol.checkout.dir}`. The checkout should be done as the same user defined in project.xml. This is because the SCM plugin must be able to keep the project in sync with the repository.
- Using Maven and the cruisecontrol plugin, update the CruiseControl configuration file.
- Restart CruiseControl

How often should I update the CruiseControl configuration file?
Since there is limited information in the file, not very often. You should regenerate the file when:

- Source repository configuration changes
- Developer email address changes
- Directories on used by Cruise Control change, i.e. the logs directory
- Project goals change
- List of dependent project change

Do I need to edit the CruiseControl configuration file?
By default no, since much of the information in the file originates in properties and project.xml. For changes that affect the generation of the project or projects, you may want to create you own template. If you have dependencies defined, then you need to ensure the order of the projects in the file corresponds with the order the project should be built.

# Multiprojects

How can I generate just a single configuration file for multiple projects?
A neat trick of the cruisecontrol plugin is that if you specify a single configuration file for all your projects, then the plugin will just install/update the one your are working on. However the cruisecontrol plugin does not currently support having one CC project definitions per Maven subproject. The currently recommended solution is to have one CC project for your multiproject (i.e. viewing the multiproject project as one project only).