12.2 Artifact Repositories

There are 3 types of plugin repositories: `local`, `remote` and `legacy`. Artifact repositories can be either configured locally to a project (inside `griffon-app/conf/BuildConfig`) or globally to all projects (inside `$USER_HOME/.griffon/settings.groovy`),

#### Local Artifact Repositories

This type of repository is file based and can be hosted anywhere in the file system, even on shared folders over the network. Local repositories makes it easier to share snapshot releases among team mates as the network latency should be smaller. Their configuration requires but one parameter to be specified: the path where the artifacts will be placed. Here's a sample configuration for a local repository named '`my-local-repo`'.

    griffon.artifact.repositories = [
        'my-local-repo': [
            type: 'local',
            path: '/usr/local/share/griffon/repository'
        ]
    ]

There's a local repository available to you at all times. It's name is '`griffon-local`' and it's default path is `$USER_HOME/.griffon/repository`. This repository is the default place where downloaded plugins will be installed for speeding up retrievals at a later time.

#### Remote Artifact Repositories

This type of repository allows developers to publish releases via SCP or web. The repository is handled by a Grails application whose code is freely available at https://github.com/griffon/griffon-artifact-portal .

This code has been released under Apache Software License 2.0. Follow the instructions found in the README to run your own artifact portal. Configuring a remote repository requires a different set of properties than those exposed by local repositories. For example, if your organization is running a remote artifact repository located at `http://acme.com:8080/portal` then use the following configuration

    griffon.artifact.repositories = [
        'acme': [
            type: 'remote',
            url: 'http://acme.com:8080/portal'
        ]
    ]

You may specify additional properties such as

    griffon.artifact.repositories = [
        'acme': [
            type: 'remote',
            url: 'http://acme.com:8080/portal',
            username: 'wallace',
            password: 'gromit',
            port: 2345,
            timeout: 60
        ]
    ]

Where the following defaults apply

- port = 2222
- timeout = 30 (in seconds)

You may leave both `username` and `password` out however you will be asked for this credentials when publishing a release to this particular repository. Adding your credentials in the configuration avoids typing them when releasing artifacts.

#### Legacy Artifact Repository

This is a very special type of repository that exists only for backward compatibility during the migration of the old Griffon plugin repository to the new infrastructure in http://artifacts.griffon-framework.org .

There are no configuration options for this repository, neither you can publish a release to it; it's effectively read-only.