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

📄 property.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;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.Enumeration;import java.util.Properties;import java.util.Stack;import java.util.Vector;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.PropertyHelper;import org.apache.tools.ant.Task;import org.apache.tools.ant.types.Path;import org.apache.tools.ant.types.Reference;/** * Sets a property by name, or set of properties (from file or * resource) in the project.  </p> * Properties are immutable: whoever sets a property first freezes it for the * rest of the build; they are most definitely not variable. * <p>There are five ways to set properties:</p> * <ul> *   <li>By supplying both the <i>name</i> and <i>value</i> attribute.</li> *   <li>By supplying both the <i>name</i> and <i>refid</i> attribute.</li> *   <li>By setting the <i>file</i> attribute with the filename of the property *     file to load. This property file has the format as defined by the file used *     in the class java.util.Properties.</li> *   <li>By setting the <i>resource</i> attribute with the resource name of the *     property file to load. This property file has the format as defined by the *     file used in the class java.util.Properties.</li> *   <li>By setting the <i>environment</i> attribute with a prefix to use. *     Properties will be defined for every environment variable by *     prefixing the supplied name and a period to the name of the variable.</li> * </ul> * <p>Although combinations of these ways are possible, only one should be used * at a time. Problems might occur with the order in which properties are set, for * instance.</p> * <p>The value part of the properties being set, might contain references to other * properties. These references are resolved at the time these properties are set. * This also holds for properties loaded from a property file.</p> * Properties are case sensitive. * * @since Ant 1.1 * * @ant.attribute.group name="name" description="One of these, when using the name attribute" * @ant.attribute.group name="noname" description="One of these, when not using the name attribute" * @ant.task category="property" */public class Property extends Task {    // CheckStyle:VisibilityModifier OFF - bc    protected String name;    protected String value;    protected File file;    protected URL url;    protected String resource;    protected Path classpath;    protected String env;    protected Reference ref;    protected String prefix;    private Project fallback;    protected boolean userProperty; // set read-only properties    // CheckStyle:VisibilityModifier ON    /**     * Constructor for Property.     */    public Property() {        this(false);    }    /**     * Constructor for Property.     * @param userProperty if true this is a user property     * @since Ant 1.5     */    protected Property(boolean userProperty) {        this(userProperty, null);    }    /**     * Constructor for Property.     * @param userProperty if true this is a user property     * @param fallback a project to use to look for references if the reference is     *                 not in the current project     * @since Ant 1.5     */    protected Property(boolean userProperty, Project fallback) {        this.userProperty = userProperty;        this.fallback = fallback;    }    /**     * The name of the property to set.     * @param name property name     */    public void setName(String name) {        this.name = name;    }    /**     * Get the property name.     * @return the property name     */    public String getName() {        return name;    }    /**     * Sets the property to the absolute filename of the     * given file. If the value of this attribute is an absolute path, it     * is left unchanged (with / and \ characters converted to the     * current platforms conventions). Otherwise it is taken as a path     * relative to the project's basedir and expanded.     * @param location path to set     *     * @ant.attribute group="name"     */    public void setLocation(File location) {        setValue(location.getAbsolutePath());    }    /**     * The value of the property.     * @param value value to assign     *     * @ant.attribute group="name"     */    public void setValue(String value) {        this.value = value;    }    /**     * Get the property value.     * @return the property value     */    public String getValue() {        return value;    }    /**     * Filename of a property file to load.     * @param file filename     *     * @ant.attribute group="noname"     */    public void setFile(File file) {        this.file = file;    }    /**     * Get the file attribute.     * @return the file attribute     */    public File getFile() {        return file;    }    /**     * The url from which to load properties.     * @param url url string     *     * @ant.attribute group="noname"     */    public void setUrl(URL url) {        this.url = url;    }    /**     * Get the url attribute.     * @return the url attribute     */    public URL getUrl() {        return url;    }    /**     * Prefix to apply to properties loaded using <code>file</code>     * or <code>resource</code>.     * A "." is appended to the prefix if not specified.     * @param prefix prefix string     * @since Ant 1.5     */    public void setPrefix(String prefix) {        this.prefix = prefix;        if (!prefix.endsWith(".")) {            this.prefix += ".";        }    }    /**     * Get the prefix attribute.     * @return the prefix attribute     * @since Ant 1.5     */    public String getPrefix() {        return prefix;    }    /**     * Sets a reference to an Ant datatype     * declared elsewhere.     * Only yields reasonable results for references     * PATH like structures or properties.     * @param ref reference     *     * @ant.attribute group="name"     */    public void setRefid(Reference ref) {        this.ref = ref;    }    /**     * Get the refid attribute.     * @return the refid attribute     */    public Reference getRefid() {        return ref;    }    /**     * The resource name of a property file to load     * @param resource resource on classpath     *     * @ant.attribute group="noname"     */    public void setResource(String resource) {        this.resource = resource;    }    /**     * Get the resource attribute.     * @return the resource attribute     */    public String getResource() {        return resource;    }    /**     * Prefix to use when retrieving environment variables.     * Thus if you specify environment=&quot;myenv&quot;     * you will be able to access OS-specific     * environment variables via property names &quot;myenv.PATH&quot; or     * &quot;myenv.TERM&quot;.     * <p>     * Note that if you supply a property name with a final     * &quot;.&quot; it will not be doubled. ie environment=&quot;myenv.&quot; will still     * allow access of environment variables through &quot;myenv.PATH&quot; and     * &quot;myenv.TERM&quot;. This functionality is currently only implemented     * on select platforms. Feel free to send patches to increase the number of platforms     * this functionality is supported on ;).<br>     * Note also that properties are case sensitive, even if the     * environment variables on your operating system are not, e.g. it     * will be ${env.Path} not ${env.PATH} on Windows 2000.     * @param env prefix     *     * @ant.attribute group="noname"     */    public void setEnvironment(String env) {        this.env = env;    }    /**     * Get the environment attribute.     * @return the environment attribute     * @since Ant 1.5     */    public String getEnvironment() {        return env;    }    /**     * The classpath to use when looking up a resource.     * @param classpath to add to any existing classpath     */    public void setClasspath(Path classpath) {        if (this.classpath == null) {            this.classpath = classpath;        } else {            this.classpath.append(classpath);        }    }    /**     * The classpath to use when looking up a resource.     * @return a path to be configured     */    public Path createClasspath() {        if (this.classpath == null) {            this.classpath = new Path(getProject());        }        return this.classpath.createPath();    }    /**     * the classpath to use when looking up a resource,     * given as reference to a &lt;path&gt; defined elsewhere     * @param r a reference to a classpath     */

⌨️ 快捷键说明

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