我的字符串是C:\tools\jenkins\HOME\workspace\MAL1793_Driver_DIO
我想用UNIX样式路径"\"
替换windows样式的目录路径"/"
我在我的pom文件中使用了一个Ant propertyregex任务来实现此目的。
<execution>
<id>ReplaceWSPath</id>
<phase>process-resources</phase>
<configuration>
<tasks>
<echo>"Updating workspace path"</echo>
<propertyregex
property="WSPath"
input="C:\tools\jenkins\HOME\workspace\MAL1793_Driver_DIO"
regexp="\"
replace="/"
global="true" />
<echo>"workspace Path = ${WSPath}"</echo>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
但执行后我收到此错误:
Problem: failed to create task or type propertyregex
[ERROR] Cause: The name is undefined.
[ERROR] Action: Check the spelling.
[ERROR] Action: Check that any custom tasks/types have been declared.
[ERROR] Action: Check that any <presetdef>/<macrodef> declarations have taken place.
我正在使用Ant版本1.7。是否缺少任何设置?
答案 0 :(得分:1)
<propertyregex>
任务不是Ant的一部分,它是Ant任务的第三方Ant-Contrib集合的一部分。您引用的错误消息表明您至少缺少在构建文件中使用Ant-Contrib所需的<taskdef>
。
有关如何设置和使用Ant-Contrib的说明,请访问SourceForge:
首先,您必须安装Apache Ant本身,大部分是Ant-Contrib 任务需要Ant 1.5或更高版本才能正常工作。你可以下载Ant 来自Apache。
Ant {contrib版本可在downloads页面获得。邮件 可以从project页面访问列表,CVS和错误跟踪器。
有关cpptasks的安装说明,请参阅cc任务。至 安装ant-contrib:
- 醇>
将ant-contrib-0.3.jar复制到Ant的lib目录中 安装。如果要在自己的项目中使用其中一个任务, 添加行
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
到你的构建文件。
- 醇>
将ant-contrib-0.3.jar保存在一个单独的位置。你现在必须 告诉Ant明确在哪里找到它(比如在/ usr / share / java / lib中):
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> <classpath> <pathelement location="/usr/share/java/lib/ant-contrib-0.3.jar"/> </classpath> </taskdef>
如果您还没有Ant-Contrib,或者在构建中需要其他任何内容,您可以考虑使用内置的Ant <pathconvert>
任务作为<propertyregex>
的替代。
答案 1 :(得分:0)
我觉得使用ant script-javascript更加简单
<property name="wsPath" value="C:\tools\jenkins\HOME\workspace\MAL1793_Driver_DIO" />
<script language="javascript">
var wsPath_BackSlash = project.getProperty("wsPath");
println("before: " + wsPath_BackSlash);
var wsPath_FrwdSlash= wsPath_BackSlash.replace("\\", "/");
println("wsPath_FrwdSlash: "+wsPath_FrwdSlash);
project.setProperty("wsPath", wsPath_FrwdSlash);
</script>
<echo message="${wsPath}" />
注意:将变量命名为与参数相同,例如var wsPath可能会给出错误,它给了我!
礼貌:https://stackoverflow.com/a/16099717/4979331