Как заменить обратную косую черту на косую черту для свойства $ {basedir} в профиле maven - PullRequest
6 голосов
/ 04 декабря 2010

У меня есть файл pom.xml с определенным свойством module.basedir , который должен содержать преобразованное свойство basedir . Он определяется следующим образом:

<properties>
    <module.basedir>${basedir}</module.basedir>
</properties>

И у меня есть следующий код, который выполняется с помощью mgroovy плагина:

<source>
    println project.properties['module.basedir']
    project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');
    println project.properties['module.basedir']
</source>

Позже я использую это свойство в других плагинах. Это работает нормально, пока я не перенесу определения плагинов в профиль maven. И когда профиль maven активирован, плагин mgroovy работает нормально, но когда я получаю доступ к свойству в следующем плагине, я получаю неизмененное значение.

Вот как я могу получить доступ к этому свойству:

${module.basedir}

Похоже, что при выполнении профиля он создает собственные копии свойств, определенных в проекте, и они используются при обращении из плагинов.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 27 августа 2015

Я столкнулся с той же проблемой, используя gmaven-plugin на windows для создания описания модуля EJB.Я не разбираюсь в Groovy, но этот подход работает для меня:

def basedir = project.properties['module.basedir'].replace('\\','/')
def md = (basedir + "/target/module.xml" as File)
0 голосов
/ 06 декабря 2010
String path = '\\a\\b\\c'
assert path.replaceAll('\\\\', '/') == '/a/b/c'

Таким образом, вам нужно заменить эту строку:

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');

на

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\\\','/');

Причина, по которой вам нужно 4 обратной косой черты, заключается в том, что каждая из двойной обратной косой черты вИсходная строка (path в моем примере) должна быть экранирована.

...