Currently, the 'maven' and 'ivy' repository implementations only support publishing and resolving via HTTP, HTTPS and local file system. To use SFTP, SCP or any other protocol, users currently need to revert to using a (deprecated) custom Ivy resolver. It would be great to add native support for different protocols to the 'ivy' and 'maven' repositories. This would involve adding support for dependency resolution, as well as for publishing via the new publishing plugins.
- Publish to and resolve from a repository via sftp, supplying user/password credentials
- Publish to and resolve from a repository via scp, supplying user/password credentials
- Publish to and resolve from a sftp/scp/https repository, using public key authentication
- Cache build scripts applied from an http/https URL
- Apply build scripts from an sftp/scp URL
- Prompt user for credentials when not provided in the repository definition
- Introduce an integration test suite that tests ResourceConnector directly: run the tests against each ResourceConnector implementation.
- Each resource connector project will provide a fixture that allows it to be executed against the ResourceConnector test suite
- Should include specific transport tests, together with some publish/resolve smoke tests
- Remove coverage of different transports from dependency management integration suite
Provide some way in the repository DSL to specify that public key authentication be used for any transport that supports it. For sftp and scp, provide a way to use the user's SSH settings.
Generalise the repository transports so that they can be reused to download build scripts. This will add sftp/scp/s3 support.
- Add some way to provide credentials, possibly by modelling as a plugin repository.
Generalise the remote resource caching layer so that it can be reused for build scripts.
- Check for changes periodically, with command-line override to check now.
- Offline support.
Provide some general credentials management service, plus a provider implementation that can prompt on the command-line. Use this to ask for credentials when attempting to use a remote resource that requires authentication, and where no credentials have been provided.
Allow tooling API clients to provide a credentials provider. This will allow IDE integrations to prompt the user for and manage their credentials.