Merge branch '2.0.x'
This commit is contained in:
		
						commit
						7790876575
					
				|  | @ -93,11 +93,26 @@ public interface BootArchive extends Task { | |||
| 
 | ||||
| 	/** | ||||
| 	 * Adds files to the classpath to include in the archive. The given {@code classpath} | ||||
| 	 * are evaluated as per {@link Project#files(Object...)}. | ||||
| 	 * is evaluated as per {@link Project#files(Object...)}. | ||||
| 	 * @param classpath the additions to the classpath | ||||
| 	 */ | ||||
| 	void classpath(Object... classpath); | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Sets the classpath to include in the archive. The given {@code classpath} is | ||||
| 	 * evaluated as per {@link Project#files(Object...)}. | ||||
| 	 * @param classpath the classpath | ||||
| 	 * @since 2.0.7 | ||||
| 	 */ | ||||
| 	void setClasspath(Object classpath); | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Sets the classpath to include in the archive. | ||||
| 	 * @param classpath the classpath | ||||
| 	 * @since 2.0.7 | ||||
| 	 */ | ||||
| 	void setClasspath(FileCollection classpath); | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Returns {@code true} if the Devtools jar should be excluded, otherwise | ||||
| 	 * {@code false}. | ||||
|  |  | |||
|  | @ -129,6 +129,14 @@ public class BootJar extends Jar implements BootArchive { | |||
| 				classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	public void setClasspath(Object classpath) { | ||||
| 		this.classpath = getProject().files(classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	public void setClasspath(FileCollection classpath) { | ||||
| 		this.classpath = getProject().files(classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public boolean isExcludeDevtools() { | ||||
| 		return this.support.isExcludeDevtools(); | ||||
|  |  | |||
|  | @ -120,7 +120,7 @@ public class BootWar extends War implements BootArchive { | |||
| 
 | ||||
| 	/** | ||||
| 	 * Adds files to the provided classpath to include in the {@code WEB-INF/lib-provided} | ||||
| 	 * directory of the war. The given {@code classpath} are evaluated as per | ||||
| 	 * directory of the war. The given {@code classpath} is evaluated as per | ||||
| 	 * {@link Project#files(Object...)}. | ||||
| 	 * @param classpath the additions to the classpath | ||||
| 	 */ | ||||
|  | @ -131,6 +131,27 @@ public class BootWar extends War implements BootArchive { | |||
| 				classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Sets the provided classpath to include in the {@code WEB-INF/lib-provided} | ||||
| 	 * directory of the war. | ||||
| 	 * @param classpath the classpath | ||||
| 	 * @since 2.0.7 | ||||
| 	 */ | ||||
| 	public void setProvidedClasspath(FileCollection classpath) { | ||||
| 		this.providedClasspath = getProject().files(classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Sets the provided classpath to include in the {@code WEB-INF/lib-provided} | ||||
| 	 * directory of the war. The given {@code classpath} is evaluated as per | ||||
| 	 * {@link Project#files(Object...)}. | ||||
| 	 * @param classpath the classpath | ||||
| 	 * @since 2.0.7 | ||||
| 	 */ | ||||
| 	public void setProvidedClasspath(Object classpath) { | ||||
| 		this.providedClasspath = getProject().files(classpath); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public boolean isExcludeDevtools() { | ||||
| 		return this.support.isExcludeDevtools(); | ||||
|  |  | |||
|  | @ -133,6 +133,31 @@ public abstract class AbstractBootArchiveTests<T extends Jar & BootArchive> { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void classpathCanBeSetUsingAFileCollection() throws IOException { | ||||
| 		this.task.setMainClassName("com.example.Main"); | ||||
| 		this.task.classpath(this.temp.newFile("one.jar")); | ||||
| 		this.task | ||||
| 				.setClasspath(this.task.getProject().files(this.temp.newFile("two.jar"))); | ||||
| 		this.task.execute(); | ||||
| 		try (JarFile jarFile = new JarFile(this.task.getArchivePath())) { | ||||
| 			assertThat(jarFile.getEntry(this.libPath + "/one.jar")).isNull(); | ||||
| 			assertThat(jarFile.getEntry(this.libPath + "/two.jar")).isNotNull(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void classpathCanBeSetUsingAnObject() throws IOException { | ||||
| 		this.task.setMainClassName("com.example.Main"); | ||||
| 		this.task.classpath(this.temp.newFile("one.jar")); | ||||
| 		this.task.setClasspath(this.temp.newFile("two.jar")); | ||||
| 		this.task.execute(); | ||||
| 		try (JarFile jarFile = new JarFile(this.task.getArchivePath())) { | ||||
| 			assertThat(jarFile.getEntry(this.libPath + "/one.jar")).isNull(); | ||||
| 			assertThat(jarFile.getEntry(this.libPath + "/two.jar")).isNotNull(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void loaderIsWrittenToTheRootOfTheJar() throws IOException { | ||||
| 		this.task.setMainClassName("com.example.Main"); | ||||
|  |  | |||
|  | @ -48,6 +48,31 @@ public class BootWarTests extends AbstractBootArchiveTests<BootWar> { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void providedClasspathCanBeSetUsingAFileCollection() throws IOException { | ||||
| 		getTask().setMainClassName("com.example.Main"); | ||||
| 		getTask().providedClasspath(this.temp.newFile("one.jar")); | ||||
| 		getTask().setProvidedClasspath( | ||||
| 				getTask().getProject().files(this.temp.newFile("two.jar"))); | ||||
| 		getTask().execute(); | ||||
| 		try (JarFile jarFile = new JarFile(getTask().getArchivePath())) { | ||||
| 			assertThat(jarFile.getEntry("WEB-INF/lib-provided/one.jar")).isNull(); | ||||
| 			assertThat(jarFile.getEntry("WEB-INF/lib-provided/two.jar")).isNotNull(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void providedClasspathCanBeSetUsingAnObject() throws IOException { | ||||
| 		getTask().setMainClassName("com.example.Main"); | ||||
| 		getTask().providedClasspath(this.temp.newFile("one.jar")); | ||||
| 		getTask().setProvidedClasspath(this.temp.newFile("two.jar")); | ||||
| 		getTask().execute(); | ||||
| 		try (JarFile jarFile = new JarFile(getTask().getArchivePath())) { | ||||
| 			assertThat(jarFile.getEntry("WEB-INF/lib-provided/one.jar")).isNull(); | ||||
| 			assertThat(jarFile.getEntry("WEB-INF/lib-provided/two.jar")).isNotNull(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void devtoolsJarIsExcludedByDefaultWhenItsOnTheProvidedClasspath() | ||||
| 			throws IOException { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue