parent
d07f689446
commit
2d75cc79c0
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -36,6 +36,7 @@ import static org.junit.Assert.assertTrue;
|
||||||
* Integration test for {@link JarCommand}.
|
* Integration test for {@link JarCommand}.
|
||||||
*
|
*
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
|
* @author Stephane Nicoll
|
||||||
*/
|
*/
|
||||||
public class JarCommandIT {
|
public class JarCommandIT {
|
||||||
|
|
||||||
|
|
@ -98,12 +99,16 @@ public class JarCommandIT {
|
||||||
|
|
||||||
assertThat(invocation.getErrorOutput(), equalTo(""));
|
assertThat(invocation.getErrorOutput(), equalTo(""));
|
||||||
assertThat(invocation.getStandardOutput(), containsString("Hello World!"));
|
assertThat(invocation.getStandardOutput(), containsString("Hello World!"));
|
||||||
assertThat(invocation.getStandardOutput(), containsString("/public/public.txt"));
|
|
||||||
assertThat(invocation.getStandardOutput(),
|
assertThat(invocation.getStandardOutput(),
|
||||||
containsString("/resources/resource.txt"));
|
containsString("/BOOT-INF/classes!/public/public.txt"));
|
||||||
assertThat(invocation.getStandardOutput(), containsString("/static/static.txt"));
|
|
||||||
assertThat(invocation.getStandardOutput(),
|
assertThat(invocation.getStandardOutput(),
|
||||||
containsString("/templates/template.txt"));
|
containsString("/BOOT-INF/classes!/resources/resource.txt"));
|
||||||
|
assertThat(invocation.getStandardOutput(),
|
||||||
|
containsString("/BOOT-INF/classes!/static/static.txt"));
|
||||||
|
assertThat(invocation.getStandardOutput(),
|
||||||
|
containsString("/BOOT-INF/classes!/templates/template.txt"));
|
||||||
|
assertThat(invocation.getStandardOutput(),
|
||||||
|
containsString("/BOOT-INF/classes!/root.properties"));
|
||||||
assertThat(invocation.getStandardOutput(), containsString("Goodbye Mama"));
|
assertThat(invocation.getStandardOutput(), containsString("Goodbye Mama"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,16 @@
|
||||||
|
|
||||||
package org.springframework.boot.cli;
|
package org.springframework.boot.cli;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.boot.cli.command.archive.WarCommand;
|
import org.springframework.boot.cli.command.archive.WarCommand;
|
||||||
import org.springframework.boot.cli.infrastructure.CommandLineInvoker;
|
import org.springframework.boot.cli.infrastructure.CommandLineInvoker;
|
||||||
import org.springframework.boot.cli.infrastructure.CommandLineInvoker.Invocation;
|
import org.springframework.boot.cli.infrastructure.CommandLineInvoker.Invocation;
|
||||||
import org.springframework.boot.loader.tools.JavaExecutable;
|
import org.springframework.boot.loader.tools.JavaExecutable;
|
||||||
import org.springframework.util.SocketUtils;
|
import org.springframework.util.SocketUtils;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.zip.ZipFile;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,27 +57,8 @@ public class WarCommandIT {
|
||||||
assertThat(invocation.getOutput())
|
assertThat(invocation.getOutput())
|
||||||
.contains("/WEB-INF/lib-provided/tomcat-embed-core");
|
.contains("/WEB-INF/lib-provided/tomcat-embed-core");
|
||||||
assertThat(invocation.getOutput())
|
assertThat(invocation.getOutput())
|
||||||
.contains("/WEB-INF/lib-provided/tomcat-embed-core");
|
.contains("WEB-INF/classes!/root.properties");
|
||||||
process.destroy();
|
process.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void resourcesAreCopiedToWebInfClasses() throws Exception {
|
|
||||||
File war = new File("target/test-app.war");
|
|
||||||
Invocation invocation = this.cli.invoke("war", war.getAbsolutePath(),
|
|
||||||
"war.groovy");
|
|
||||||
invocation.await();
|
|
||||||
assertThat(war.exists()).isTrue();
|
|
||||||
|
|
||||||
ZipFile warFile = new ZipFile(war.getAbsolutePath());
|
|
||||||
try {
|
|
||||||
assertThat(warFile.getEntry("application.properties")).isNull();
|
|
||||||
assertThat(warFile.getEntry("WEB-INF/classes/application.properties")).isNotNull();
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
warFile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ class Example implements CommandLineRunner {
|
||||||
println getClass().getResource('/resources/resource.txt')
|
println getClass().getResource('/resources/resource.txt')
|
||||||
println getClass().getResource('/static/static.txt')
|
println getClass().getResource('/static/static.txt')
|
||||||
println getClass().getResource('/templates/template.txt')
|
println getClass().getResource('/templates/template.txt')
|
||||||
|
println getClass().getResource('/root.properties')
|
||||||
println template('template.txt', [world:'Mama'])
|
println template('template.txt', [world:'Mama'])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ class WarExample implements CommandLineRunner {
|
||||||
|
|
||||||
void run(String... args) {
|
void run(String... args) {
|
||||||
println getClass().getResource('/org/apache/tomcat/InstanceManager.class')
|
println getClass().getResource('/org/apache/tomcat/InstanceManager.class')
|
||||||
|
println getClass().getResource('/root.properties')
|
||||||
throw new RuntimeException("onStart error")
|
throw new RuntimeException("onStart error")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2015 the original author or authors.
|
* Copyright 2012-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package org.springframework.boot.cli.command.archive;
|
package org.springframework.boot.cli.command.archive;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
@ -93,7 +94,7 @@ abstract class ArchiveCommand extends OptionParsingCommand {
|
||||||
|
|
||||||
private final String type;
|
private final String type;
|
||||||
|
|
||||||
protected final Layout layout;
|
private final Layout layout;
|
||||||
|
|
||||||
private OptionSpec<String> includeOption;
|
private OptionSpec<String> includeOption;
|
||||||
|
|
||||||
|
|
@ -104,6 +105,10 @@ abstract class ArchiveCommand extends OptionParsingCommand {
|
||||||
this.layout = layout;
|
this.layout = layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Layout getLayout() {
|
||||||
|
return this.layout;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doOptions() {
|
protected void doOptions() {
|
||||||
this.includeOption = option("include",
|
this.includeOption = option("include",
|
||||||
|
|
@ -284,8 +289,11 @@ abstract class ArchiveCommand extends OptionParsingCommand {
|
||||||
return libraries;
|
return libraries;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void writeClasspathEntry(JarWriter writer,
|
protected void writeClasspathEntry(JarWriter writer,
|
||||||
MatchedResource entry) throws IOException;
|
MatchedResource entry) throws IOException {
|
||||||
|
writer.writeEntry(entry.getName(),
|
||||||
|
new FileInputStream(entry.getFile()));
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract LibraryScope getLibraryScope(File file);
|
protected abstract LibraryScope getLibraryScope(File file);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,8 @@
|
||||||
package org.springframework.boot.cli.command.archive;
|
package org.springframework.boot.cli.command.archive;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.springframework.boot.cli.command.Command;
|
import org.springframework.boot.cli.command.Command;
|
||||||
import org.springframework.boot.loader.tools.JarWriter;
|
|
||||||
import org.springframework.boot.loader.tools.Layouts;
|
import org.springframework.boot.loader.tools.Layouts;
|
||||||
import org.springframework.boot.loader.tools.LibraryScope;
|
import org.springframework.boot.loader.tools.LibraryScope;
|
||||||
|
|
||||||
|
|
@ -30,7 +27,6 @@ import org.springframework.boot.loader.tools.LibraryScope;
|
||||||
*
|
*
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Henri Kerola
|
|
||||||
*/
|
*/
|
||||||
public class JarCommand extends ArchiveCommand {
|
public class JarCommand extends ArchiveCommand {
|
||||||
|
|
||||||
|
|
@ -50,13 +46,6 @@ public class JarCommand extends ArchiveCommand {
|
||||||
return LibraryScope.COMPILE;
|
return LibraryScope.COMPILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void writeClasspathEntry(JarWriter writer,
|
|
||||||
ResourceMatcher.MatchedResource entry) throws IOException {
|
|
||||||
writer.writeEntry(entry.getName(),
|
|
||||||
new FileInputStream(entry.getFile()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2015 the original author or authors.
|
* Copyright 2012-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -66,9 +66,10 @@ public class WarCommand extends ArchiveCommand {
|
||||||
@Override
|
@Override
|
||||||
protected void writeClasspathEntry(JarWriter writer,
|
protected void writeClasspathEntry(JarWriter writer,
|
||||||
ResourceMatcher.MatchedResource entry) throws IOException {
|
ResourceMatcher.MatchedResource entry) throws IOException {
|
||||||
writer.writeEntry(this.layout.getClassesLocation() + entry.getName(),
|
writer.writeEntry(getLayout().getClassesLocation() + entry.getName(),
|
||||||
new FileInputStream(entry.getFile()));
|
new FileInputStream(entry.getFile()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue