0

(プロパティ ファイルを介して) ant プロパティに疑問符文字を入れたいのですが、Dangling meta character '?'エラーが発生し続けます。アリのプロパティ内に疑問符を入れるにはどうすればよいですか??


Antプロパティファイル内に次のものがあります。

 installerTemplate=E:/projectX/branch/?/path/to/installer.exe
 installerBranch=foobar

ant ファイル:

<project .... >
    <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
    <property file="project.properties" />

    <target name="fixPath">
        <propertyregex property="installerFileLocation" input="${installerTemplate}"
            regexp="?" replace="${installerVersion}" global="true" />
        <propertyregex property="installerFileLocation.win" input="${installerFileLocation}"
            regexp="/" replace="\\\\"/>
        <echo>${installerFileLocation.win}</echo>
    </target>
</project>

しかし、ant を実行すると、次のようになります。

BUILD FAILED
E:\p4-abird\depot_cfg\ssb\tools\ssb_dev_env_automation\create_ssb_vm.xml:37: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?
^
    at java.util.regex.Pattern.error(Pattern.java:1713)
    at java.util.regex.Pattern.sequence(Pattern.java:1878)
    at java.util.regex.Pattern.expr(Pattern.java:1752)
    at java.util.regex.Pattern.compile(Pattern.java:1460)
    at java.util.regex.Pattern.<init>(Pattern.java:1133)
    at java.util.regex.Pattern.compile(Pattern.java:847)
    at org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher.getCompiledPattern(Jdk14RegexpMatcher.java:67)
    at org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher.matches(Jdk14RegexpMatcher.java:94)
    at net.sf.antcontrib.property.RegexTask.doReplace(RegexTask.java:135)
    at net.sf.antcontrib.property.RegexTask.execute(RegexTask.java:192)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:392)
    at org.apache.tools.ant.Target.performTasks(Target.java:413)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:811)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 0 seconds

アリのプロパティ内に疑問符を入れるにはどうすればよいですか??

4

1 に答える 1

1

問題は次のようです。

regexp="?"

'?' 正規表現パターンで特別な意味を持つ正規表現メタ文字です。リテラル '?' と一致させたい場合 char、エスケープする必要があります。

于 2012-12-20T18:10:53.527 に答える