Browse Source

Update CLI to use spring-boot-dependency-tools

Update `GroovyCompiler` and `AetherGrapeEngineFactory` to use the
recently added `spring-boot-dependency-tools` in favor of loading
dependency information from a generated properties file.
pull/272/head
Phillip Webb 12 years ago
parent
commit
49ef1cd236
  1. 64
      spring-boot-cli/pom.xml
  2. 2
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java
  3. 62
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ManagedDependenciesArtifactCoordinatesResolver.java
  4. 73
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java
  5. 2
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/AetherGrapeEngineFactory.java
  6. 39
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/ManagedDependenciesFactory.java
  7. 93
      spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/PropertiesManagedDependenciesFactory.java
  8. 12
      spring-boot-cli/src/main/resources/META-INF/springcli.properties.vpp
  9. 3
      spring-boot-cli/src/test/java/org/springframework/boot/cli/GrabCommandIntegrationTests.java
  10. 86
      spring-boot-cli/src/test/java/org/springframework/boot/cli/compiler/ManagedDependenciesArtifactCoordinatesResolverTests.java
  11. 53
      spring-boot-cli/src/test/java/org/springframework/boot/cli/compiler/grape/ManagedDependenciesFactoryTests.java
  12. 6
      spring-boot-cli/src/test/resources/grab-samples/grab.groovy
  13. 20
      spring-boot-dependencies/pom.xml
  14. 15
      spring-boot-parent/pom.xml
  15. 2
      spring-boot-tools/spring-boot-gradle-plugin/pom.xml

64
spring-boot-cli/pom.xml

@ -26,29 +26,13 @@ @@ -26,29 +26,13 @@
</properties>
</profile>
</profiles>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${project.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-xml</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>${reactor.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Compile -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>spring-boot-dependency-tools</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
@ -131,21 +115,6 @@ @@ -131,21 +115,6 @@
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.vpp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/groovy</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
@ -251,11 +220,6 @@ @@ -251,11 +220,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>foundrylogic.vpp</groupId>
<artifactId>vpp</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
@ -268,24 +232,6 @@ @@ -268,24 +232,6 @@
</dependency>
</dependencies>
<executions>
<execution>
<id>generate-cli-properties</id>
<phase>generate-resources</phase>
<configuration>
<target>
<typedef resource="foundrylogic/vpp/typedef.properties" />
<taskdef resource="foundrylogic/vpp/taskdef.properties" />
<property name="dependencies" value="${project.parent}" />
<vppcopy
file="${basedir}/src/main/resources/META-INF/springcli.properties.vpp"
tofile="${project.build.directory}/generated-resources/META-INF/springcli.properties"
overwrite="true" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>homebrew</id>
<phase>package</phase>

2
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/GroovyCompiler.java

@ -91,7 +91,7 @@ public class GroovyCompiler { @@ -91,7 +91,7 @@ public class GroovyCompiler {
this.configuration = configuration;
this.loader = createLoader(configuration);
this.coordinatesResolver = new PropertiesArtifactCoordinatesResolver(this.loader);
this.coordinatesResolver = new ManagedDependenciesArtifactCoordinatesResolver();
AetherGrapeEngine grapeEngine = AetherGrapeEngineFactory.create(this.loader,
configuration.getRepositoryConfiguration());

62
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/ManagedDependenciesArtifactCoordinatesResolver.java

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
/*
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler;
import org.springframework.boot.dependency.tools.Dependency;
import org.springframework.boot.dependency.tools.ManagedDependencies;
/**
* {@link ArtifactCoordinatesResolver} backed by {@link ManagedDependencies}.
*
* @author Phillip Webb
*/
public class ManagedDependenciesArtifactCoordinatesResolver implements
ArtifactCoordinatesResolver {
private final ManagedDependencies dependencies;
public ManagedDependenciesArtifactCoordinatesResolver() {
this(ManagedDependencies.get());
}
ManagedDependenciesArtifactCoordinatesResolver(ManagedDependencies dependencies) {
this.dependencies = dependencies;
}
@Override
public String getGroupId(String artifactId) {
Dependency dependency = find(artifactId);
return (dependency == null ? null : dependency.getGroupId());
}
@Override
public String getVersion(String artifactId) {
Dependency dependency = find(artifactId);
return (dependency == null ? null : dependency.getVersion());
}
private Dependency find(String artifactId) {
if (artifactId != null) {
if (artifactId.startsWith("spring-boot")) {
return new Dependency("org.springframework.boot", artifactId,
this.dependencies.getVersion());
}
return this.dependencies.find(artifactId);
}
return null;
}
}

73
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/PropertiesArtifactCoordinatesResolver.java

@ -1,73 +0,0 @@ @@ -1,73 +0,0 @@
/*
* Copyright 2012-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.springframework.util.Assert;
/**
* {@link ArtifactCoordinatesResolver} backed by a properties file.
*
* @author Andy Wilkinson
*/
public final class PropertiesArtifactCoordinatesResolver implements
ArtifactCoordinatesResolver {
private final ClassLoader loader;
private Properties properties = null;
public PropertiesArtifactCoordinatesResolver(ClassLoader loader) {
this.loader = loader;
}
@Override
public String getGroupId(String artifactId) {
return getProperty(artifactId + ".groupId");
}
@Override
public String getVersion(String artifactId) {
return getProperty(artifactId + ".version");
}
private String getProperty(String name) {
if (this.properties == null) {
this.properties = loadProperties();
}
String property = this.properties.getProperty(name);
return property;
}
private Properties loadProperties() {
Properties properties = new Properties();
InputStream inputStream = this.loader
.getResourceAsStream("META-INF/springcli.properties");
Assert.state(inputStream != null, "Unable to load springcli properties");
try {
properties.load(inputStream);
return properties;
}
catch (IOException ex) {
throw new IllegalStateException("Unable to load springcli properties", ex);
}
}
}

2
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/AetherGrapeEngineFactory.java

@ -63,7 +63,7 @@ public abstract class AetherGrapeEngineFactory { @@ -63,7 +63,7 @@ public abstract class AetherGrapeEngineFactory {
new DefaultRepositorySystemSessionAutoConfiguration().apply(
repositorySystemSession, repositorySystem);
List<Dependency> managedDependencies = new PropertiesManagedDependenciesFactory()
List<Dependency> managedDependencies = new ManagedDependenciesFactory()
.getManagedDependencies();
return new AetherGrapeEngine(classLoader, repositorySystem,

39
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/ManagedDependenciesFactory.java

@ -16,21 +16,48 @@ @@ -16,21 +16,48 @@
package org.springframework.boot.cli.compiler.grape;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.util.artifact.JavaScopes;
import org.springframework.boot.dependency.tools.ManagedDependencies;
/**
* An abstraction for accessing the managed dependencies that should be used to influence
* the outcome of dependency resolution performed by Aether.
* Factory to create Maven {@link Dependency} objects from Boot
* {@link ManagedDependencies}.
*
* @author Andy Wilkinson
* @author Phillip Webb
*/
public interface ManagedDependenciesFactory {
public class ManagedDependenciesFactory {
private final ManagedDependencies dependencies;
ManagedDependenciesFactory() {
this(ManagedDependencies.get());
}
ManagedDependenciesFactory(ManagedDependencies dependencies) {
this.dependencies = dependencies;
}
/**
* Returns the managed dependencies.
* Return a list of the managed dependencies.
*/
List<Dependency> getManagedDependencies();
public List<Dependency> getManagedDependencies() {
List<Dependency> result = new ArrayList<Dependency>();
for (org.springframework.boot.dependency.tools.Dependency dependency : this.dependencies) {
Artifact artifact = asArtifact(dependency);
result.add(new Dependency(artifact, JavaScopes.COMPILE));
}
return result;
}
private Artifact asArtifact(
org.springframework.boot.dependency.tools.Dependency dependency) {
return new DefaultArtifact(dependency.getGroupId(), dependency.getArtifactId(),
"jar", dependency.getVersion());
}
}

93
spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/grape/PropertiesManagedDependenciesFactory.java

@ -1,93 +0,0 @@ @@ -1,93 +0,0 @@
/*
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler.grape;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.Properties;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.util.artifact.JavaScopes;
import org.springframework.util.Assert;
/**
* A {@link ManagedDependenciesFactory} that uses a properties file to configure the list
* of managed dependencies that it returns.
*
* @author Andy Wilkinson
*/
class PropertiesManagedDependenciesFactory implements ManagedDependenciesFactory {
private static final String PROPERTY_SUFFIX_GROUP_ID = ".groupId";
private static final String PROPERTY_SUFFIX_VERSION = ".version";
private final List<Dependency> managedDependencies;
public PropertiesManagedDependenciesFactory() {
Properties properties = loadProperties();
this.managedDependencies = getManagedDependencies(properties);
}
private static Properties loadProperties() {
Properties properties = new Properties();
InputStream inputStream = PropertiesManagedDependenciesFactory.class
.getClassLoader().getResourceAsStream("META-INF/springcli.properties");
Assert.state(inputStream != null, "Unable to load springcli properties");
try {
properties.load(inputStream);
return properties;
}
catch (IOException ex) {
throw new IllegalStateException("Unable to load springcli properties", ex);
}
}
private static List<Dependency> getManagedDependencies(Properties properties) {
List<Dependency> dependencies = new ArrayList<Dependency>();
for (Entry<Object, Object> entry : properties.entrySet()) {
String propertyName = (String) entry.getKey();
if (propertyName.endsWith(PROPERTY_SUFFIX_GROUP_ID)) {
String artifactId = propertyName.substring(0, propertyName.length()
- PROPERTY_SUFFIX_GROUP_ID.length());
String groupId = (String) entry.getValue();
String version = properties.getProperty(artifactId
+ PROPERTY_SUFFIX_VERSION);
if (version != null) {
Artifact artifact = new DefaultArtifact(groupId, artifactId, "jar",
version);
dependencies.add(new Dependency(artifact, JavaScopes.COMPILE));
}
}
}
return dependencies;
}
@Override
public List<Dependency> getManagedDependencies() {
return new ArrayList<Dependency>(this.managedDependencies);
}
}

12
spring-boot-cli/src/main/resources/META-INF/springcli.properties.vpp

@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
#set( $artifacts = $project.getReference('maven.project').dependencyManagement.dependencies )
#foreach( $artifact in $artifacts )
#if ( $artifact.type == 'jar' )
${artifact.artifactId}.version: $artifact.version
${artifact.artifactId}.groupId: $artifact.groupId
#end
#end
#foreach( $entry in $project.getReference('maven.project').properties.entrySet() )
#if ( $entry.key.endsWith('.version') )
$entry.key: $entry.value
#end
#end

3
spring-boot-cli/src/test/java/org/springframework/boot/cli/GrabCommandIntegrationTests.java

@ -54,8 +54,7 @@ public class GrabCommandIntegrationTests { @@ -54,8 +54,7 @@ public class GrabCommandIntegrationTests {
// Use --autoconfigure=false to limit the amount of downloaded dependencies
String output = this.cli.grab("grab.groovy", "--autoconfigure=false");
assertTrue(new File("target/repository/net/sf/jopt-simple/jopt-simple")
.isDirectory());
assertTrue(new File("target/repository/joda-time/joda-time").isDirectory());
// Should be resolved from local repository cache
assertTrue(output.contains("Downloading: file:"));
}

86
spring-boot-cli/src/test/java/org/springframework/boot/cli/compiler/ManagedDependenciesArtifactCoordinatesResolverTests.java

@ -0,0 +1,86 @@ @@ -0,0 +1,86 @@
/*
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler;
import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.dependency.tools.Dependency;
import org.springframework.boot.dependency.tools.ManagedDependencies;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
/**
* Tests for {@link ManagedDependenciesArtifactCoordinatesResolver}.
*
* @author Phillip Webb
*/
public class ManagedDependenciesArtifactCoordinatesResolverTests {
private ManagedDependencies dependencies;
private ManagedDependenciesArtifactCoordinatesResolver resolver;
@Before
public void setup() {
this.dependencies = mock(ManagedDependencies.class);
given(this.dependencies.find("a1")).willReturn(new Dependency("g1", "a1", "0"));
given(this.dependencies.getVersion()).willReturn("1");
this.resolver = new ManagedDependenciesArtifactCoordinatesResolver(
this.dependencies);
}
@Test
public void getGroupIdForBootArtifact() throws Exception {
assertThat(this.resolver.getGroupId("spring-boot-something"),
equalTo("org.springframework.boot"));
verify(this.dependencies, never()).find(anyString());
}
@Test
public void getGroupIdFound() throws Exception {
assertThat(this.resolver.getGroupId("a1"), equalTo("g1"));
}
@Test
public void getGroupIdNotFound() throws Exception {
assertThat(this.resolver.getGroupId("a2"), nullValue());
}
@Test
public void getVersionForBootArtifact() throws Exception {
assertThat(this.resolver.getVersion("spring-boot-something"), equalTo("1"));
verify(this.dependencies, never()).find(anyString());
}
@Test
public void getVersionFound() throws Exception {
assertThat(this.resolver.getVersion("a1"), equalTo("0"));
}
@Test
public void getVersionNotFound() throws Exception {
assertThat(this.resolver.getVersion("a2"), nullValue());
}
}

53
spring-boot-cli/src/test/java/org/springframework/boot/cli/compiler/grape/ManagedDependenciesFactoryTests.java

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
/*
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.cli.compiler.grape;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.springframework.boot.dependency.tools.Dependency;
import org.springframework.boot.dependency.tools.ManagedDependencies;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
/**
* Tests for {@link ManagedDependenciesFactory}.
*
* @author Phillip Webb
*/
public class ManagedDependenciesFactoryTests {
@Test
public void getManagedDependencies() {
List<Dependency> dependencyList = new ArrayList<Dependency>();
dependencyList.add(new Dependency("g1", "a1", "1"));
dependencyList.add(new Dependency("g1", "a2", "1"));
ManagedDependencies dependencies = mock(ManagedDependencies.class);
given(dependencies.iterator()).willReturn(dependencyList.iterator());
ManagedDependenciesFactory factory = new ManagedDependenciesFactory(dependencies);
List<org.eclipse.aether.graph.Dependency> result = factory
.getManagedDependencies();
assertThat(result.size(), equalTo(2));
assertThat(result.get(0).toString(), equalTo("g1:a1:jar:1 (compile)"));
assertThat(result.get(1).toString(), equalTo("g1:a2:jar:1 (compile)"));
}
}

6
spring-boot-cli/src/test/resources/grab-samples/grab.groovy

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
@Grab('jopt-simple')
@Grab('joda-time')
class GrabTest {
}
}

20
spring-boot-dependencies/pom.xml

@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
<codahale-metrics.version>3.0.1</codahale-metrics.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<commons-pool.version>1.6</commons-pool.version>
<crashub.version>1.3.0-beta14</crashub.version>
<gradle.version>1.6</gradle.version>
<groovy.version>2.2.1</groovy.version>
<h2.version>1.3.175</h2.version>
@ -25,6 +26,7 @@ @@ -25,6 +26,7 @@
<jackson.version>2.3.1</jackson.version>
<jetty.version>8.1.14.v20131031</jetty.version>
<joda-time.version>2.3</joda-time.version>
<jolokia.version>1.1.5</jolokia.version>
<jstl.version>1.2</jstl.version>
<junit.version>4.11</junit.version>
<lettuce.version>2.3.3</lettuce.version>
@ -51,8 +53,6 @@ @@ -51,8 +53,6 @@
<thymeleaf-extras-springsecurity3.version>2.1.1.RELEASE</thymeleaf-extras-springsecurity3.version>
<thymeleaf-layout-dialect.version>1.2.1</thymeleaf-layout-dialect.version>
<tomcat.version>7.0.47</tomcat.version>
<crashub.version>1.3.0-beta14</crashub.version>
<jolokia.version>1.1.5</jolokia.version>
</properties>
<prerequisites>
<maven>3.0.0</maven>
@ -209,6 +209,16 @@ @@ -209,6 +209,16 @@
<artifactId>groovy</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-xml</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
@ -270,6 +280,11 @@ @@ -270,6 +280,11 @@
<artifactId>liquibase-core</artifactId>
<version>${liquibase.version}</version>
</dependency>
<dependency>
<groupId>org.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>${reactor.version}</version>
</dependency>
<dependency>
<groupId>org.projectreactor</groupId>
<artifactId>reactor-spring</artifactId>
@ -320,7 +335,6 @@ @@ -320,7 +335,6 @@
<artifactId>groovy-all</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>

15
spring-boot-parent/pom.xml

@ -94,21 +94,6 @@ @@ -94,21 +94,6 @@
<artifactId>maven-plugin-annotations</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-archiver</artifactId>

2
spring-boot-tools/spring-boot-gradle-plugin/pom.xml

@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
<!-- Provided -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<artifactId>groovy</artifactId>
<scope>provided</scope>
</dependency>
<dependency>

Loading…
Cancel
Save