bla*_*ube 24 ant relative-path
在我的项目的build.xml中,我定义了一个属性:
<property name="somedir.dir" location="my_project/some_dir"/>
Run Code Online (Sandbox Code Playgroud)
价值${somedir.dir}
将是一条绝对的道路:/home/myuser/my_project/some_dir
.
我需要的只是./my_project/some_dir
没有${basedir}
价值的相对路径/home/myuser
.如何使用Ant实现此目的?
到目前为止,我通过将属性转换为路径然后使用"pathconvert"找到了解决方案,但我不认为这是一个很好的解决方案:
<path id="temp.path">
<pathelement location="${somedir.dir}" />
</path>
<pathconvert property="relative.dir" refid="temp.path">
<globmapper from="${basedir}/*" to="./*" />
</pathconvert>
Run Code Online (Sandbox Code Playgroud)
还有其他(更优雅)的建议吗?
mar*_*ton 43
从Ant 1.8.0开始,您可以使用relative
Ant property
任务的属性.
例如:
<property name="somedir.dir" location="my_project/some_dir"/>
<echo message="${somedir.dir}" />
<property name="somedir.rel" value="${somedir.dir}" relative="yes" />
<echo message="${somedir.rel}" />
Run Code Online (Sandbox Code Playgroud)
导致:
[echo] /home/.../stack_overflow/ant/my_project/some_dir
[echo] my_project/some_dir
Run Code Online (Sandbox Code Playgroud)
小智 7
一个稍微简洁的解决方案是指定somepath
内部<pathconvert>
:
<pathconvert property="relative.dir">
<path location="${somepath}"/>
<globmapper from="${basedir}/*" to="./*" />
</pathconvert>
Run Code Online (Sandbox Code Playgroud)
location
使用项目的basedir
. 所以我认为value
选项可以让你更好地控制:
<property name="base.dir" value="/home/myuser"/>
Run Code Online (Sandbox Code Playgroud)
和
<property name="somedir.dir" value="${base.dir}/some_dir"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33755 次 |
最近记录: |