如何使用 build.xml 在 java 代码中设置属性

2023-12-06

我是 Ant 的新手,任何帮助将不胜感激。

我想做的是:

当我调用 Ant 目标时,我正在执行以下操作:

ant -DSIMV3.1=true run-tenantManagement

现在在 build.xml 中,我有:

<target name="run-tenantManagement" depends="jar">
   <property name="SIMV3.1" value="${SIMV3.1}" />
    ...
</target>

现在我希望属性 SIMV3.1 的值在我的 java 代码中可见。 因为在我的java代码中,我想设置一个条件:

if(SIMV3.1==true){
//do something
}else{
//do something else
}

请帮忙。


就目标构建(即生成的 jar 文件)中的属性值而言,另一种更持久的方法是让 ant 将属性值写入包含在目标 jar 文件中的资源文件。这使得在构建期间设置的属性值具有更好的生命周期(因为缺乏更好的词),以便它可以在项目的(即构建的)产品中可用。例如,示例 ant 文件可能如下所示:

<project name="sandbox" basedir="." default="build">
    <condition property="SIMV3.1" value="${SIMV3.1}" else="false">
        <isset property="SIMV3.1"/>
    </condition>

    <target name="clean">
        <delete verbose="${verbose}" dir="bin" failonerror="false"/>
        <delete verbose="${verbose}" file="lib/sandbox.jar" failonerror="false"/>
    </target>

    <target name="compile">
        <mkdir dir="bin"/>
        <javac srcdir="src" destdir="bin"/>
    </target>

    <target name="resources">
        <echo file="bin/sandbox/resources/SIMV3.1">${SIMV3.1}</echo>
    </target>

    <target name="build" depends="compile, resources">
        <mkdir dir="lib"/>
        <jar destfile="lib/sandbox.jar" basedir="bin">
            <manifest>
                <attribute name="Main-Class" value="sandbox.Sandbox"/>
            </manifest>
        </jar>
   </target>
</project>

The 状况如果未提供,则任务默认属性值为 false,并且资源任务将属性值写入将包含在 jar 文件中的资源文件(在build任务)。因此这样构建:

ant -DSIMV3.1=true

将导致“真”值被写入SIMV3.1文件在资源包裹。调用 ant 而不指定属性将导致默认属性false被写入该资源文件。

在代码中可以通过以下方式访问该资源输入流通过从文件中读取第一行(也是唯一的一行)并使用Boolean像这样的类:

package sandbox;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Sandbox {

    public static void main(String[] args) {

        String resource = "/sandbox/resources/SIMV3.1";
        InputStream stream = Sandbox.class.getResourceAsStream(resource);
        InputStreamReader reader = new InputStreamReader(stream);
        BufferedReader buffer = new BufferedReader(reader);
        boolean simv3_1 = false;

        try {

            simv3_1 = Boolean.parseBoolean(buffer.readLine());
        }
        catch (IOException e) {

            e.printStackTrace();
        }

        System.out.println("SIMV3.1 = " + simv3_1);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 build.xml 在 java 代码中设置属性 的相关文章

随机推荐

  • 如何配置 Socket.io 在 https 上的同一端口上运行?

    和往常一样 我绞尽脑汁地寻找问题的答案 所以我再次向你们所有的天才伸出援手 我已经使用 socket io 使用express 设置了一个 Node js 服务器 它使用端口 8443 运行良好 它运行良好 由于我的许多客户似乎不允许端口
  • 如何在 TPL 数据流中安排流控制?

    我正在尝试控制 TPL 数据流中的数据流 我有一个非常快的生产者和一个非常慢的消费者 我的真实代码更复杂 但尽管如此 这是一个非常好的模型 它重现了问题 当我运行它时 代码开始消耗内存 就像它已经过时一样 并且生产者上的输出队列会尽快填满
  • 2013 年密码哈希

    今天 最好 的解决方案是什么 这似乎是一个不错的选择 https defuse ca php pbkdf2 htm 但是升级到 PHP5 5 并使用它怎么样 http php net manual en function hash pbkd
  • 哪个标准措辞告诉我们 ref-to-const 临时生命周期扩展仅“有效一次”?

    我在聊天中看到了以下示例 include
  • CallKit 中的 CXStartCallAction isVideo 属性和本机视频按钮如何使用?

    我试图弄清楚当用户点击本机 iOS 通话屏幕中的视频按钮时会发生什么 我已经浏览了一些教程并查看了代码 它似乎不是委托方法或任何东西 CXStartCallAction有一个属性 var isVideo Bool 但我似乎无法弄清楚它是如何
  • 将变量从 bash 传递到可执行文件(使用 stdin 读取参数)

    我有以下内容test cppC 程序 include
  • XSLT 1.0 中的条件

    我有一个 XSLT 1 0 2 0 不是一个选项 样式表 它生成 XHTML 它可以根据参数生成完整的 XHTML 有效的文件或只是 div div 片段 旨在用于 包含在网页中 我的问题是在这两个中生成不同的 XML 声明 案例 对于独立
  • 通过比较 2 个相邻元素对数组进行分组

    我有一个对象数组 我想根据两个相邻元素的属性之间的差异对它们进行分组 该数组已按该属性排序 例如 原始数组 array a b c d e and a attribute 1 b attribute 3 c attribute 6 d at
  • 异步可插拔协议

    Using this作为参考 我正在尝试创建一个异步可插入协议 该协议仅暂时可供我的应用程序使用 并且未在系统范围内注册 我在用着CoInternetGetSession然后打电话RegisterNameSpace去做吧 然而 当我打电话给
  • 异步编程是否意味着多线程?

    让我们来谈谈 JavaScript 代码setInterval方法每个2 sec 我也有一个onblur某些控件的动画事件 在这种情况下onblur发生 动画 我可能会得到setInterval功能 Question 异步编程是否意味着多线
  • Nothing 等于 Default 吗?

    当我在 VB NET 中将变量设置为空时会发生什么 真的没有什么等于默认吗 还是我在这里遗漏了一些东西 如果它是值类型 如 Integer Double 等 则将变量设置为 Nothing 会将其设置为默认值 如果它是引用类型 它实际上会被
  • Spring Boot:热插拔不起作用

    我正在使用 Spring Boot 1 3 2 和 gradle 插件 在我的多部分项目中 HTML JS CSS 文件的热交换 重新加载不起作用 resources wro groovy application yml templates
  • Cosmos DB - 删除文档

    如何从 Cosmos DB 中删除单个记录 我可以使用 SQL 语法进行选择 SELECT FROM collection1 WHERE collection1 ts gt 0 果然所有文档 类似于行 都被返回 但是 当我尝试删除时这不起作
  • 如何配置代理设置以便 Eclipse 可以下载新插件?

    我正在使用 Eclipse 3 7 在 Web 代理后面的 Windows XP 环境中 我想安装Groovy 插件 on a 新解压的日食靛蓝 Eclipse Java EE Indigo M4 我添加了更新站点 to the Avail
  • 使用 lubridate 和 dplyr 将多列转换为日期

    我正在寻找一种简单的方法来将数据框中以 日期 开头的所有变量转换为日期lubridate dmy 它们目前是 dmy 格式的字符 我原以为 mutate if 或 mutate each 可以完成dplyr但我正在努力弄清楚如何做 您可以使
  • 在运行时更改一组特定车辆的传输信号强度

    我开始 大约一周以来 在 omnet 5 0 下使用静脉 4 4 我目前的任务是让车辆根据具体情况调整其传输范围 我确实阅读了很多像这样的问题 以及在其他主题 论坛中 ieee802 11p模块中的动态传输范围 车辆接收 RSU 范围外的信
  • 在R中绘制线段

    我有一些 x 和 y 坐标 我试图将它们绘制成线段 我从我认为应该有效的行为中得到了一些意想不到的行为 对于每个线段 都有一组起始坐标 x1 y1 和一组结束坐标 x2 y2 这是一个数据框 称为 df 如下所示 x1 y1 x2 y2 3
  • D3 csv 返回行

    这是来自d3csv API 文档 d3 csv path to file csv row function d return key d key value d value get function error rows console l
  • uwp:如何根据列表视图项的值更改其背景颜色?

    编辑 UWP 应用程序与 WPF 应用程序并非 100 相同 我有一个带有 ListView 的 uwp 应用程序 在 ListView 中 我使用带有测试类的 DataTemplate 它显示测试的名称和点 我想要完成的是一个触发器 检查
  • 如何使用 build.xml 在 java 代码中设置属性

    我是 Ant 的新手 任何帮助将不胜感激 我想做的是 当我调用 Ant 目标时 我正在执行以下操作 ant DSIMV3 1 true run tenantManagement 现在在 build xml 中 我有