Ant: преобразовать имя класса в путь к файлу - PullRequest
6 голосов
/ 03 февраля 2012

Как преобразовать имена классов Java в пути к файлам с помощью задач Ant?

Например, учитывая свойство, содержащее foo.bar.Duck, я бы хотел получить foo/bar/Duck.class.

Я пытался (и не смог) реализовать это в терминах <pathconvert> и <regexpmapper>.

Ответы [ 3 ]

4 голосов
/ 04 февраля 2012

Вот один из возможных способов сделать это:

<property name="class.name" value="foo.bar.Duck"/>

<loadresource property="file.name">
  <string value="${class.name}" />
  <filterchain>
    <replaceregex pattern="\." replace="/" flags="g" />
    <replaceregex pattern="$" replace=".class" />
  </filterchain>
</loadresource>

Это помещает желаемое foo/bar/Duck.class в свойство file.name.

1 голос
/ 04 февраля 2012

Вот еще один способ, использующий Ant resources и unpackagemapper, который предназначен для этой цели.Также доступно противоположное package mapper.

<property name="class.name" value="foo.bar.Duck"/>

<resources id="file.name">
  <mappedresources>
    <string value="${class.name}" />
    <unpackagemapper from="*" to="*.class" />
  </mappedresources>
</resources>

Значение ресурса используется с помощью синтаксиса свойства помощника ${toString:...}, например:

<echo message="File: ${toString:file.name}" />

Выход

[echo] File: foo/bar/Duck.class
0 голосов
/ 29 декабря 2017

Я чувствую, что использую ant script-javascript для этого гораздо проще

        <property name="class.name" value="foo.bar.duck" />
        <script language="javascript">
            var className = project.getProperty("class.name");
            println("before: " + className);
            var filePath= className.replace("\\", "/");
            println("File Path: "+filePath);
            project.setProperty("filePath", filePath);              
        </script>
        <echo message="${filePath}" />

примечание: присвоение вашей переменной имени аргумента, например, var wsPath, может привести к ошибке, это дало мне!

вежливость: https://stackoverflow.com/a/16099717/4979331

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...