bootjarbuilder.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 94 行

JAVA
94
字号
/*
 * $Id: BootJarBuilder.java,v 1.3 2004/01/20 19:30:07 epr Exp $
 */
package org.jnode.build;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import org.apache.tools.ant.taskdefs.Jar;
import org.apache.tools.ant.types.ZipFileSet;
import org.jnode.plugin.PluginException;
import org.jnode.plugin.model.PluginJar;

/**
 * @author epr
 */
public class BootJarBuilder extends AbstractPluginsTask {

	private File destFile;

	public void execute() throws BuildException {

		final long start = System.currentTimeMillis();

		final long lmDest = destFile.lastModified();
		final long lmPIL = getPluginListFile().lastModified();

		final PluginList piList;
		final long lmPI;
		try {
			piList = getPluginList();
			lmPI = piList.lastModified();
		} catch (PluginException ex) {
			throw new BuildException(ex);
		} catch (IOException ex) {
			throw new BuildException(ex);
		}

		if ((lmPIL < lmDest) && (lmPI < lmDest)) {
			// No need to do anything, skip
			return;
		}
		destFile.delete();

		try {
			// Load the plugin descriptors
			/*
			 * final PluginRegistry piRegistry; piRegistry = new PluginRegistryModel(piList.getDescriptorUrlList());
			 */

			final Jar jarTask = new Jar();
			jarTask.setProject(getProject());
			jarTask.setTaskName(getTaskName());
			jarTask.setDestFile(destFile);
			jarTask.setCompress(false);

			final URL[] pluginList = piList.getPluginList();
			for (int i = 0; i < pluginList.length; i++) {
				final URL url = pluginList[i];
				final PluginJar piJar = new PluginJar(null, url);
				if (piJar.getDescriptor().isSystemPlugin()) {
					final File f = new File(url.getPath());
					final ZipFileSet fs = new ZipFileSet();
					fs.createExclude().setName("plugin.xml");
					fs.setSrc(f);
					jarTask.addFileset(fs);
				}
			}

			/*
			 * for (Iterator i = piRegistry.getDescriptorIterator(); i.hasNext(); ) { final PluginDescriptor descr = (PluginDescriptor)i.next(); final Runtime rt = descr.getRuntime(); if (rt != null) {
			 * final Library[] libs = rt.getLibraries(); for (int l = 0; l < libs.length; l++) { processLibrary(jarTask, libs[l], fileSets, getPluginDir()); } }
			 */

			// Now create the jar file
			jarTask.execute();

		} catch (Exception ex) {
			ex.printStackTrace();
			throw new BuildException(ex);
		}
		final long end = System.currentTimeMillis();
		log("Building boot-jar took " + (end - start) + "ms");
	}

	/**
	 * @param file
	 */
	public void setDestFile(File file) {
		destFile = file;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?