Merge pull request #2792 from jazir1979/master

* pull2792:
  Add useTestClassPath to run/start maven goals
pull/2565/merge
Stephane Nicoll 10 years ago
commit 2801f6a848

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.boot.maven.it</groupId>
<artifactId>run-use-test-classpath</artifactId>
<version>0.0.1.BUILD-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>@project.groupId@</groupId>
<artifactId>@project.artifactId@</artifactId>
<version>@project.version@</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<useTestClasspath>true</useTestClasspath>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>@spring.version@</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,33 @@
/*
* Copyright 2012-2015 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.test;
public class SampleApplication {
public static void main(String[] args) {
Class<?> appContext = null;
try {
appContext = Class.forName("org.springframework.context.ApplicationContext");
}
catch (ClassNotFoundException e) {
throw new IllegalStateException("Test dependencies not added to classpath", e);
}
System.out.println("I haz been run");
}
}

@ -0,0 +1,3 @@
def file = new File(basedir, "build.log")
return file.text.contains("I haz been run")

@ -36,6 +36,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.artifact.filter.collection.AbstractArtifactFeatureFilter; import org.apache.maven.shared.artifact.filter.collection.AbstractArtifactFeatureFilter;
import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts; import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts;
import org.springframework.boot.loader.tools.FileUtils; import org.springframework.boot.loader.tools.FileUtils;
import org.springframework.boot.loader.tools.MainClassFinder; import org.springframework.boot.loader.tools.MainClassFinder;
@ -45,6 +46,7 @@ import org.springframework.boot.loader.tools.MainClassFinder;
* @author Phillip Webb * @author Phillip Webb
* @author Stephane Nicoll * @author Stephane Nicoll
* @author David Liu * @author David Liu
* @author Daniel Young
* @see RunMojo * @see RunMojo
* @see StartMojo * @see StartMojo
*/ */
@ -131,6 +133,13 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo {
@Parameter(property = "fork") @Parameter(property = "fork")
private Boolean fork; private Boolean fork;
/**
* Flag to include the test classpath when running.
* @since 1.3
*/
@Parameter(property = "useTestClasspath", defaultValue = "false")
private Boolean useTestClasspath;
/** /**
* Specify if the application process should be forked. * Specify if the application process should be forked.
* @return {@code true} if the application process should be forked * @return {@code true} if the application process should be forked
@ -340,7 +349,7 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo {
private void addDependencies(List<URL> urls) throws MalformedURLException, private void addDependencies(List<URL> urls) throws MalformedURLException,
MojoExecutionException { MojoExecutionException {
FilterArtifacts filters = getFilters(new TestArtifactFilter()); FilterArtifacts filters = this.useTestClasspath ? getFilters() : getFilters(new TestArtifactFilter());
Set<Artifact> artifacts = filterDependencies(this.project.getArtifacts(), filters); Set<Artifact> artifacts = filterDependencies(this.project.getArtifacts(), filters);
for (Artifact artifact : artifacts) { for (Artifact artifact : artifacts) {
if (artifact.getFile() != null) { if (artifact.getFile() != null) {

@ -152,6 +152,11 @@ mvn spring-boot:run
from the classpath as well. See {{{./examples/exclude-dependency.html}Exclude a dependency}} for from the classpath as well. See {{{./examples/exclude-dependency.html}Exclude a dependency}} for
more details. more details.
Sometimes it is useful to include test dependencies when running the application. For example,
if you want to run your application in a test mode that uses stub classes. If you wish to do this,
you can set the <<<useTestClasspath>>> parameter to true. Note that this is only applied when you
run an application: the <<<repackage>>> goal will not add test dependencies to the resulting JAR/WAR.
* Working with integration tests * Working with integration tests
While you may start your Spring Boot application very easily from your test (or test suite) itself, While you may start your Spring Boot application very easily from your test (or test suite) itself,

Loading…
Cancel
Save