See the light - agile, industrial strength, rapid web application development made easy

(Quick Reference) # 4.7.10 Deploying to a Maven Repository - Reference Documentation Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith, Lari Hotari Version: 2.3.8 ## 4.7.10 Deploying to a Maven Repository If you use Maven to build your Grails project, you can use the standard Maven targets `mvn install` and `mvn deploy`. If not, you can deploy a Grails project or plugin to a Maven repository using the release plugin. The plugin provides the ability to publish Grails projects and plugins to local and remote Maven repositories. There are two key additional targets added by the plugin: maven-install - Installs a Grails project or plugin into your local Maven cache maven-deploy - Deploys a Grails project or plugin to a remote Maven repository By default this plugin will automatically generate a valid `pom.xml` for you unless a `pom.xml` is already present in the root of the project, in which case this `pom.xml` file will be used. #### maven-install The `maven-install` command will install the Grails project or plugin artifact into your local Maven cache:
    grails maven-install
In the case of plugins, the plugin zip file will be installed, whilst for application the application WAR file will be installed. #### maven-deploy The `maven-deploy` command will deploy a Grails project or plugin into a remote Maven repository:
    grails maven-deploy
It is assumed that you have specified the necessary `<distributionManagement>` configuration within a `pom.xml` or that you specify the `id` of the remote repository to deploy to:
    grails maven-deploy --repository=myRepo
The `repository` argument specifies the 'id' for the repository. Configure the details of the repository specified by this 'id' within your `grails-app/conf/BuildConfig.groovy` file or in your `$USER_HOME/.grails/settings.groovy` file:
    grails.project.dependency.distribution = {
        localRepository = "/path/to/my/local"
        remoteRepository(id: "myRepo", url: "http://myserver/path/to/repo")
    }
The syntax for configuring remote repositories matches the syntax from the remoteRepository element in the Ant Maven tasks. For example the following XML:
    <remoteRepository id="myRepo" url="scp://localhost/www/repository">
        <authentication username="..." privateKey="${user.home}/.ssh/id_dsa"/>
    </remoteRepository>
Can be expressed as:
    remoteRepository(id: "myRepo", url: "scp://localhost/www/repository") {
        authentication username: "...", privateKey: "${userHome}/.ssh/id_dsa"
    }
By default the plugin will try to detect the protocol to use from the URL of the repository (ie "http" from "http://.." etc.), however to specify a different protocol you can do:
    grails maven-deploy --repository=myRepo --protocol=webdav
The available protocols are: http scp scpexe ftp webdav #### Groups, Artifacts and Versions Maven defines the notion of a 'groupId', 'artifactId' and a 'version'. This plugin pulls this information from the Grails project conventions or plugin descriptor. ##### Projects For applications this plugin will use the Grails application name and version provided by Grails when generating the `pom.xml` file. To change the version you can run the `set-version` command:
    grails set-version 0.2
The Maven `groupId` will be the same as the project name, unless you specify a different one in Config.groovy:
    grails.project.groupId="com.mycompany"
##### Plugins With a Grails plugin the `groupId` and `version` are taken from the following properties in the `GrailsPlugin.groovy` descriptor:
    String groupId = 'myOrg'
    String version = '0.1'
The 'artifactId' is taken from the plugin name. For example if you have a plugin called `FeedsGrailsPlugin` the `artifactId` will be "feeds". If your plugin does not specify a `groupId` then this defaults to "org.grails.plugins". | Quick Reference (hide)