Add support for custom dependency

Prior to this commit, only spring boot starters can be added as project
dependency using a simple String denoting the suffix of the artifactId.
The standard 'org.springframework.boot' and 'spring-boot-starter-'
artifactId prefix were assumed.

This commit allows to define arbitrary dependencies with arbitrary
identifiers; the groupId, artifactId and version of the dependency can
be specified. Internally, all dependencies are converted to that format
even the ones defined as standard spring boot starters.

To allow that, a ProjectRequest is now resolved against the initializr
metadata. If a request defines an unknown dependency, a simple String
will be still considered a spring-boot-starter but a more complex
unknown id will lead to an exception (e.g. 'org.foo:bar').

Fixes gh-17
This commit is contained in:
Stephane Nicoll
2014-08-19 04:07:13 +02:00
parent 964aef8bdb
commit 3849a7b5b9
15 changed files with 527 additions and 114 deletions

View File

@@ -9,84 +9,84 @@ info:
initializr:
dependencies:
- name: Core
starters:
content:
- name: Security
value: security
id: security
- name: AOP
value: aop
id: aop
- name: Data
starters:
content:
- name: JDBC
value: jdbc
id: jdbc
- name: JPA
value: data-jpa
id: data-jpa
- name: MongoDB
value: data-mongodb
id: data-mongodb
- name: Redis
value: redis
id: redis
- name: Gemfire
value: data-gemfire
id: data-gemfire
- name: Solr
value: data-solr
id: data-solr
- name: I/O
starters:
- name: Batch
value: batch
- name: Integration
value: integration
- name: AMQP
value: amqp
content:
- name: Batch
id: batch
- name: Integration
id: integration
- name: AMQP
id: amqp
- name: Web
starters:
content:
- name: Web
value: web
id: web
- name: Websocket
value: websocket
id: websocket
- name: Rest Repositories
value: data-rest
id: data-rest
- name: Mobile
value: mobile
id: mobile
- name: Template Engines
starters:
content:
- name: Freemarker
value: freemarker
id: freemarker
- name: Velocity
value: velocity
id: velocity
- name: Groovy Templates
value: groovy-templates
id: groovy-templates
- name: Thymeleaf
value: thymeleaf
id: thymeleaf
- name: Social
starters:
content:
- name: Facebook
value: social-facebook
id: social-facebook
- name: LinkedIn
value: social-linkedin
id: social-linkedin
- name: Twitter
value: social-twitter
id: social-twitter
- name: Ops
starters:
content:
- name: Actuator
value: actuator
id: actuator
- name: Remote Shell
value: remote-shell
id: remote-shell
types:
- name: Maven POM
id: pom.xml
default: false
action: /pom.xml
- name: Maven Project
id: starter.zip
default: true
action: /starter.zip
- name: Gradle Config
id: build.gradle
default: false
action: /build.gradle
- name: Gradle Project
id: gradle.zip
default: false
action: /starter.zip
- name: Maven POM
id: pom.xml
default: false
action: /pom.xml
- name: Maven Project
id: starter.zip
default: true
action: /starter.zip
- name: Gradle Config
id: build.gradle
default: false
action: /build.gradle
- name: Gradle Project
id: gradle.zip
default: false
action: /starter.zip
packagings:
- name: Jar
id: jar