Merge pull request #226 from DealerDotCom:feature/artifact-type

* pr/226:
  Polish contribution
  Add dependency type attribute
This commit is contained in:
Stephane Nicoll 2016-07-06 10:10:59 +02:00
commit c1af184882
5 changed files with 49 additions and 8 deletions

View File

@ -61,6 +61,12 @@ class Dependency extends MetadataElement {
*/
String version
/**
* The type, can be {@code null} to indicate that the default type
* should be used (i.e. {@code jar}).
*/
String type
/**
* Dependency mapping if an attribute of the dependency differs according to the
* Spring Boot version. If no mapping matches, default attributes are used.

View File

@ -40,13 +40,13 @@ repositories {
}
<% } %>
dependencies {<% compileDependencies.each { %>
compile('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}')<% } %><% if (language=='groovy') { %>
compile('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}${it.type ? "@$it.type" : ""}')<% } %><% if (language=='groovy') { %>
compile('org.codehaus.groovy:groovy')<% } %><% if (language=='kotlin') { %>
compile("org.jetbrains.kotlin:kotlin-stdlib:\${kotlinVersion}")<% } %><% runtimeDependencies.each { %>
runtime('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}')<% } %><% providedDependencies.each { %>
providedRuntime('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}')<% } %>
runtime('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}${it.type ? "@$it.type" : ""}')<% } %><% providedDependencies.each { %>
providedRuntime('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}${it.type ? "@$it.type" : ""}')<% } %>
testCompile('org.springframework.boot:spring-boot-starter-test') <% testDependencies.each { %>
testCompile('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}')<% } %>
testCompile('${it.groupId}:${it.artifactId}${it.version ? ":$it.version" : ""}${it.type ? "@$it.type" : ""}')<% } %>
}
<% if (boms) { %>
dependencyManagement {

View File

@ -28,7 +28,8 @@
<dependency>
<groupId>${it.groupId}</groupId>
<artifactId>${it.artifactId}</artifactId><% if (it.version != null) { %>
<version>${it.version}</version><% } %>
<version>${it.version}</version><% } %><% if (it.type != null) { %>
<type>${it.type}</type><% } %>
</dependency><% } %><% if (language=='groovy') { %>
<dependency>
<groupId>org.codehaus.groovy</groupId>
@ -44,13 +45,15 @@
<groupId>${it.groupId}</groupId>
<artifactId>${it.artifactId}</artifactId><% if (it.version != null) { %>
<version>${it.version}</version><% } %>
<scope>runtime</scope>
<scope>runtime</scope><% if (it.type != null) { %>
<type>${it.type}</type><% } %>
</dependency><% } %><% providedDependencies.each { %>
<dependency>
<groupId>${it.groupId}</groupId>
<artifactId>${it.artifactId}</artifactId><% if (it.version != null) { %>
<version>${it.version}</version><% } %>
<scope>provided</scope>
<scope>provided</scope><% if (it.type != null) { %>
<type>${it.type}</type><% } %>
</dependency><% } %>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -61,7 +64,8 @@
<groupId>${it.groupId}</groupId>
<artifactId>${it.artifactId}</artifactId><% if (it.version != null) { %>
<version>${it.version}</version><% } %>
<scope>test</scope>
<scope>test</scope><% if (it.type != null) { %>
<type>${it.type}</type><% } %>
</dependency><% } %>
</dependencies>
<% if (boms) { %>

View File

@ -75,6 +75,30 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
.hasSpringBootStarterDependency('web')
}
@Test
void mavenPomWithTarDependency() {
def dependency = new Dependency(id: 'custom-artifact', groupId: 'org.foo', artifactId: 'custom-artifact', type: "tar.gz")
def metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup('test', dependency).build()
applyMetadata(metadata)
def request = createProjectRequest('custom-artifact')
generateMavenPom(request).hasDependency(dependency)
.hasDependenciesCount(2)
}
@Test
void gradleBuildWithTarDependency() {
def dependency = new Dependency(id: 'custom-artifact', groupId: 'org.foo', artifactId: 'custom-artifact', type: "tar.gz")
def metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup('test', dependency).build()
applyMetadata(metadata)
def request = createProjectRequest('custom-artifact')
generateGradleBuild(request)
.contains("compile('org.foo:custom-artifact@tar.gz')")
}
@Test
void mavenPomWithWebFacet() {
def dependency = new Dependency(id: 'thymeleaf', groupId: 'org.foo', artifactId: 'thymeleaf')

View File

@ -146,6 +146,9 @@ class PomAssert {
if (expected.scope) {
assertEquals "Wrong scope for $dependency", expected.scope, dependency.scope
}
if (expected.type) {
assertEquals "Wrong type for $dependency", expected.type, dependency.type
}
this
}
@ -238,6 +241,10 @@ class PomAssert {
if (scope.length > 0) {
dependency.scope = scope.item(0).textContent
}
def type = element.getElementsByTagName('type')
if (type.length > 0) {
dependency.type = type.item(0).textContent
}
def id = dependency.generateId()
assertFalse("Duplicate dependency with id $id", dependencies.containsKey(id))
dependencies[id] = dependency