⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 echoproperties.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You 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.apache.tools.ant.taskdefs.optional;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.Enumeration;import java.util.Hashtable;import java.util.Properties;import java.util.Vector;import java.util.List;import java.util.ArrayList;import java.util.Comparator;import java.util.Map;import java.util.Set;import java.util.TreeSet;import java.util.Collections;import java.util.Iterator;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.Task;import org.apache.tools.ant.types.EnumeratedAttribute;import org.apache.tools.ant.types.PropertySet;import org.apache.tools.ant.util.CollectionUtils;import org.apache.tools.ant.util.DOMElementWriter;import org.apache.tools.ant.util.FileUtils;import org.apache.tools.ant.util.JavaEnvUtils;import org.w3c.dom.Document;import org.w3c.dom.Element;/** *  Displays all the current properties in the build. The output can be sent to *  a file if desired. <P> * *  Attribute "destfile" defines a file to send the properties to. This can be *  processed as a standard property file later. <P> * *  Attribute "prefix" defines a prefix which is used to filter the properties *  only those properties starting with this prefix will be echoed. <P> * *  By default, the "failonerror" attribute is enabled. If an error occurs while *  writing the properties to a file, and this attribute is enabled, then a *  BuildException will be thrown. If disabled, then IO errors will be reported *  as a log statement, but no error will be thrown. <P> * *  Examples: <pre> *  &lt;echoproperties  /&gt; * </pre> Report the current properties to the log. <P> * *  <pre> *  &lt;echoproperties destfile="my.properties" /&gt; * </pre> Report the current properties to the file "my.properties", and will *  fail the build if the file could not be created or written to. <P> * *  <pre> *  &lt;echoproperties destfile="my.properties" failonerror="false" *      prefix="ant" /&gt; * </pre> Report all properties beginning with 'ant' to the file *  "my.properties", and will log a message if the file could not be created or *  written to, but will still allow the build to continue. * *@since      Ant 1.5 */public class EchoProperties extends Task {    /**     * the properties element.     */    private static final String PROPERTIES = "properties";    /**     * the property element.     */    private static final String PROPERTY = "property";    /**     * name attribute for property, testcase and testsuite elements.     */    private static final String ATTR_NAME = "name";    /**     * value attribute for property elements.     */    private static final String ATTR_VALUE = "value";    /**     * the input file.     */    private File inFile = null;    /**     *  File object pointing to the output file. If this is null, then     *  we output to the project log, not to a file.     */    private File destfile = null;    /**     *  If this is true, then errors generated during file output will become     *  build errors, and if false, then such errors will be logged, but not     *  thrown.     */    private boolean failonerror = true;    private Vector propertySets = new Vector();    private String format = "text";    private String prefix;    /**     * @since Ant 1.7     */    private String regex;    /**     * Sets the input file.     *     * @param file  the input file     */    public void setSrcfile(File file) {        inFile = file;    }    /**     *  Set a file to store the property output.  If this is never specified,     *  then the output will be sent to the Ant log.     *     *@param destfile file to store the property output     */    public void setDestfile(File destfile) {        this.destfile = destfile;    }    /**     * If true, the task will fail if an error occurs writing the properties     * file, otherwise errors are just logged.     *     *@param  failonerror  <tt>true</tt> if IO exceptions are reported as build     *      exceptions, or <tt>false</tt> if IO exceptions are ignored.     */    public void setFailOnError(boolean failonerror) {        this.failonerror = failonerror;    }    /**     *  If the prefix is set, then only properties which start with this     *  prefix string will be recorded. If regex is not set and  if this     *  is never set, or it is set to an empty string or <tt>null</tt>,     *  then all properties will be recorded. <P>     *     *  For example, if the attribute is set as:     *    <PRE>&lt;echoproperties  prefix="ant." /&gt;</PRE>     *  then the property "ant.home" will be recorded, but "ant-example"     *  will not.     *     * @param  prefix  The new prefix value     */    public void setPrefix(String prefix) {        if (prefix != null && prefix.length() != 0) {            this.prefix = prefix;            PropertySet ps = new PropertySet();            ps.setProject(getProject());            ps.appendPrefix(prefix);            addPropertyset(ps);        }    }    /**     *  If the regex is set, then only properties whose names match it     *  will be recorded.  If prefix is not set and if this is never set,     *  or it is set to an empty string or <tt>null</tt>, then all     *  properties will be recorded.<P>     *     *  For example, if the attribute is set as:     *    <PRE>&lt;echoproperties  prefix=".*ant.*" /&gt;</PRE>     *  then the properties "ant.home" and "user.variant" will be recorded,     *  but "ant-example" will not.     *     * @param  regex  The new regex value     *     * @since Ant 1.7     */    public void setRegex(String regex) {        if (regex != null && regex.length() != 0) {            this.regex = regex;            PropertySet ps = new PropertySet();            ps.setProject(getProject());            ps.appendRegex(regex);            addPropertyset(ps);        }    }    /**     * A set of properties to write.     * @param ps the property set to write     * @since Ant 1.6     */    public void addPropertyset(PropertySet ps) {        propertySets.addElement(ps);    }    /**     * Set the output format - xml or text.     * @param ea an enumerated <code>FormatAttribute</code> value     */    public void setFormat(FormatAttribute ea) {        format = ea.getValue();    }    /**     * A enumerated type for the format attribute.     * The values are "xml" and "text".     */    public static class FormatAttribute extends EnumeratedAttribute {        private String [] formats = new String[]{"xml", "text"};        /**         * @see EnumeratedAttribute#getValues()         * @return accepted values         */        public String[] getValues() {            return formats;        }    }    /**     *  Run the task.     *     *@exception  BuildException  trouble, probably file IO     */    public void execute() throws BuildException {        if (prefix != null && regex != null) {            throw new BuildException("Please specify either prefix"                    + " or regex, but not both", getLocation());        }        //copy the properties file        Hashtable allProps = new Hashtable();        /* load properties from file if specified, otherwise        use Ant's properties */        if (inFile == null && propertySets.size() == 0) {            // add ant properties            allProps.putAll(getProject().getProperties());        } else if (inFile != null) {            if (inFile.exists() && inFile.isDirectory()) {

⌨️ 快捷键说明

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