我有一个包含多个属性的属性文件。多个对多个(我们的)产品有效,有些只对一个产品有效(不能通过属性名称区分)。因此,在一个产品基于ANT的构建过程中,我想将包含所有属性的原始文件复制到产品特定文件中,跳过适用于其他产品的部分。我可以想象使用一些开始和结束标记,例如。
foo.bar=hello
# begin-product1
foo.bazz=world
# end-product1
# begin-product2
woohoo.bart=bla-bla
# end-product2
对于产品 1,我想获取文件
foo.bar=hello
foo.bazz=world
和产品2
foo.bar=hello
woohoo.bart=bla-bla
ANT是否可能实现这样的事情,或者我应该编写自己的Java帮助程序类?
您也许可以将此作为“普通蚂蚁”的起点,并根据您的需要进行调整。
这里的假设是,您希望一次处理一个产品,并给定产品编号,将该产品的属性加载到当前构建中。
方法是实现一个宏来完成这个任务。提供的属性是属性文件名和产品号。宏读取文件两次,提取公共部分,然后提取特定于产品的部分,然后将它们连接起来并作为Ant属性加载。
例如,您可以调整此宏,以获取产品所需的文件代码段并写出特定于产品的属性文件(使用 Ant
<macrodef name="loadProductProperties">
<attribute name="propertiesFile" />
<attribute name="product" />
<sequential>
<local name="config.common" />
<local name="config.product" />
<loadfile property="config.common" srcFile="@{propertiesFile}">
<filterchain>
<tokenfilter>
<filetokenizer/>
<replaceregex pattern="^(.*?)# begin-product.*" replace="\1" flags="s" />
</tokenfilter>
</filterchain>
</loadfile>
<loadfile property="config.product" srcFile="props.txt">
<filterchain>
<tokenfilter>
<filetokenizer/>
<replaceregex
pattern="^.*(# begin-product@{product}\b.*?# end-product@{product}\b).*"
replace="\1" flags="s" />
</tokenfilter>
</filterchain>
</loadfile>
<loadproperties>
<string value="${config.common}${config.product}" />
</loadproperties>
</sequential>
</macrodef>
<loadProductProperties propertiesFile="props.txt" product="2" />
问题内容: 我正在使用eclipse使用ant构建耳朵文件。我正在使用oc4j,并且我想确保在构建中包含orion- application.xml。我当前正在使用但不起作用的是: 将其添加到耳朵的正确方法是什么? 问题答案: 蚂蚁EAR任务 应通过嵌套文件集指定应放入文件夹的所有内容:
项目中经常会生成一些Git系统不需要追踪(track)的文件。典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件。当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中。 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时
问题内容: 我正在尝试从容器访问二进制ed 。当我使用它时,但是找不到我使用它时。 复制的最小步骤: 1.创建Dockerfile.test 构建并运行。这可行。 docker build . -t migrate_test -f Dockerfile.test docker run –name migrate_test migrate_test:latest Usage: migrate OPT
问题内容: 我使用以下bash脚本仅复制某些扩展名的文件(在本例中为* .sh),但是仍会复制所有文件。怎么了? 问题答案: 我认为过去是用来包含文件的子集,否则会被排除,而不仅仅是包括那些文件。换句话说:您必须考虑 包含 含义 ,不要排除 。 请尝试: 对于rsync 3.0.6或更高版本,需要按以下方式修改顺序(请参见注释): 添加该标志将避免在目标位置创建空目录结构。在3.1.2版中测试。
问题内容: 假设我的jar包“ com.test.io”中有一个名为test.txt的文件。 我将如何编写一个类来检索此文本文件,然后将内容复制到文件系统上的新文件中? 问题答案: 假设jar在您的类路径中: