Java 类org.springframework.boot.loader.archive.JarFileArchive 实例源码
项目:tifoon
文件:SpringBootPluginsClassLoader.java
public SpringBootPluginsClassLoader(final ClassLoader parent) throws IOException {
super(new URL[]{}, parent);
// find all jar plugins
final Collection<File> jarFiles = FileUtils.listFiles(new File("plugins/"), new String[]{"jar"}, false);
for(final File jarFile : jarFiles) {
// add the jar's own classes to classpath
final URL jarURL = new URL("jar:file:" + jarFile.getPath() + "!/BOOT-INF/classes/");
addURL(jarURL);
final JarFileArchive jarFileArchive = new JarFileArchive(jarFile);
final List<Archive> nestedArchives = jarFileArchive
.getNestedArchives(entry -> entry.getName().endsWith(".jar"));
for(final Archive archive : nestedArchives) {
// add all bundled dependencies to classpath
addURL(archive.getUrl());
}
}
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:Launcher.java
protected final Archive createArchive() throws Exception {
ProtectionDomain protectionDomain = getClass().getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
URI location = (codeSource == null ? null : codeSource.getLocation().toURI());
String path = (location == null ? null : location.getSchemeSpecificPart());
if (path == null) {
throw new IllegalStateException("Unable to determine code source archive");
}
File root = new File(path);
if (!root.exists()) {
throw new IllegalStateException(
"Unable to determine code source archive from " + root);
}
return (root.isDirectory() ? new ExplodedArchive(root)
: new JarFileArchive(root));
}
项目:spring-boot-concourse
文件:Launcher.java
protected final Archive createArchive() throws Exception {
ProtectionDomain protectionDomain = getClass().getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
URI location = (codeSource == null ? null : codeSource.getLocation().toURI());
String path = (location == null ? null : location.getSchemeSpecificPart());
if (path == null) {
throw new IllegalStateException("Unable to determine code source archive");
}
File root = new File(path);
if (!root.exists()) {
throw new IllegalStateException(
"Unable to determine code source archive from " + root);
}
return (root.isDirectory() ? new ExplodedArchive(root)
: new JarFileArchive(root));
}
项目:contestparser
文件:Launcher.java
protected final Archive createArchive() throws Exception {
ProtectionDomain protectionDomain = getClass().getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
URI location = (codeSource == null ? null : codeSource.getLocation().toURI());
String path = (location == null ? null : location.getSchemeSpecificPart());
if (path == null) {
throw new IllegalStateException("Unable to determine code source archive");
}
File root = new File(path);
if (!root.exists()) {
throw new IllegalStateException(
"Unable to determine code source archive from " + root);
}
return (root.isDirectory() ? new ExplodedArchive(root)
: new JarFileArchive(root));
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:PropertiesLauncher.java
private Archive getArchive(File file) throws IOException {
String name = file.getName().toLowerCase();
if (name.endsWith(".jar") || name.endsWith(".zip")) {
return new JarFileArchive(file);
}
return null;
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:WarLauncherTests.java
@Test
public void archivedWarHasOnlyWebInfClassesAndContentsOfWebInfLibOnClasspath()
throws Exception {
File warRoot = createWarArchive();
WarLauncher launcher = new WarLauncher(new JarFileArchive(warRoot));
List<Archive> archives = launcher.getClassPathArchives();
assertThat(archives).hasSize(2);
assertThat(getUrls(archives)).containsOnly(
new URL("jar:" + warRoot.toURI().toURL() + "!/WEB-INF/classes!/"),
new URL("jar:" + warRoot.toURI().toURL() + "!/WEB-INF/lib/foo.jar!/"));
}
项目:spring-boot-concourse
文件:PropertiesLauncher.java
private Archive getArchive(File file) throws IOException {
String name = file.getName().toLowerCase();
if (name.endsWith(".jar") || name.endsWith(".zip")) {
return new JarFileArchive(file);
}
return null;
}
项目:spring-boot-concourse
文件:WarLauncherTests.java
@Test
public void archivedWarHasOnlyWebInfClassesAndContentsOfWebInfLibOnClasspath()
throws Exception {
File warRoot = createWarArchive();
WarLauncher launcher = new WarLauncher(new JarFileArchive(warRoot));
List<Archive> archives = launcher.getClassPathArchives();
assertThat(archives).hasSize(2);
assertThat(getUrls(archives)).containsOnly(
new URL("jar:" + warRoot.toURI().toURL() + "!/WEB-INF/classes!/"),
new URL("jar:" + warRoot.toURI().toURL() + "!/WEB-INF/lib/foo.jar!/"));
}
项目:spring-cloud-stream-app-starters
文件:ConfigurationMetadataDocumentationMojo.java
@Override
public List<Archive> getNestedArchives(EntryFilter ignored) throws IOException {
try {
List<Archive> archives = new ArrayList<>(mavenProject.getRuntimeClasspathElements().size());
for (String dep : mavenProject.getRuntimeClasspathElements()) {
File file = new File(dep);
archives.add(file.isDirectory() ? new ExplodedArchive(file) : new JarFileArchive(file));
}
return archives;
}
catch (DependencyResolutionRequiredException e) {
throw new IOException("Could not create boot archive", e);
}
}
项目:contestparser
文件:PropertiesLauncher.java
private Archive getArchive(File file) throws IOException {
String name = file.getName().toLowerCase();
if (name.endsWith(".jar") || name.endsWith(".zip")) {
return new JarFileArchive(file);
}
return null;
}
项目:contestparser
文件:PropertiesLauncher.java
private void addParentClassLoaderEntries(List<Archive> lib)
throws IOException, URISyntaxException {
ClassLoader parentClassLoader = getClass().getClassLoader();
List<Archive> urls = new ArrayList<Archive>();
for (URL url : getURLs(parentClassLoader)) {
if (url.toString().endsWith(".jar") || url.toString().endsWith(".zip")) {
urls.add(new JarFileArchive(new File(url.toURI())));
}
else if (url.toString().endsWith("/*")) {
String name = url.getFile();
File dir = new File(name.substring(0, name.length() - 1));
if (dir.exists()) {
urls.add(new ExplodedArchive(
new File(name.substring(0, name.length() - 1)), false));
}
}
else {
String filename = URLDecoder.decode(url.getFile(), "UTF-8");
urls.add(new ExplodedArchive(new File(filename)));
}
}
// The parent archive might have a "lib/" directory, meaning we are running from
// an executable JAR. We add nested entries from there with low priority (i.e. at
// end).
addNestedArchivesFromParent(urls);
for (Archive archive : urls) {
// But only add them if they are not already included
if (findArchive(lib, archive) < 0) {
lib.add(archive);
}
}
}
项目:contestparser
文件:WarLauncherTests.java
@Test
public void archivedWarHasOnlyWebInfClassesAndContentsOfWebInfLibOnClasspath()
throws Exception {
File warRoot = createWarArchive();
WarLauncher launcher = new WarLauncher(new JarFileArchive(warRoot));
List<Archive> archives = launcher.getClassPathArchives();
assertEquals(2, archives.size());
assertThat(getUrls(archives),
hasItems(new URL("jar:" + warRoot.toURI().toURL()
+ "!/WEB-INF/classes!/"),
new URL("jar:" + warRoot.toURI().toURL() + "!/WEB-INF/lib/foo.jar!/")));
}
项目:spring-cloud-dashboard
文件:BootApplicationConfigurationMetadataResolver.java
private Archive resolveAsArchive(Resource app) throws IOException {
File moduleFile = app.getFile();
return moduleFile.isDirectory() ? new ExplodedArchive(moduleFile) : new JarFileArchive(moduleFile);
}
项目:spring-cloud-dataflow
文件:BootApplicationConfigurationMetadataResolver.java
private Archive resolveAsArchive(Resource app) throws IOException {
File moduleFile = app.getFile();
return moduleFile.isDirectory() ? new ExplodedArchive(moduleFile) : new JarFileArchive(moduleFile);
}