Свойство сборки вспомогательного модуля Maven не работает для ресурса targetPath

Я использую плагин Build Helper Maven для создания свойства, которое является версией с "-" для "."... Я настроил его следующим образом:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>build-helper-maven-plugin</artifactId>
   <version>1.10</version>
   <executions>
      <execution>
         <id>regex-property</id>
         <goals>
            <goal>regex-property</goal>
         </goals>
         <configuration>
            <name>webscript.version</name>
            <value>${project.version}</value>
            <regex>\.</regex>
            <replacement>-</replacement>
            <failIfNoMatch>false</failIfNoMatch>
         </configuration>
    </execution>
  </executions>
</plugin>

Это прекрасно работает, когда я создаю ресурсы, которые содержат ${webscript.version} свойство (они правильно подставлены, как и ожидалось в файле), так что это работает:

<resource>
    <targetPath>./alfresco/site-webscripts/org/alfresco/aikau/${project.version}/webscripts</targetPath>
    <filtering>true</filtering>
    <directory>${basedir}/src/main/resources/webscripts</directory>
</resource>

Однако проблема, с которой я сталкиваюсь, заключается в использовании свойства где-либо еще в рамках проекта... что я хочу сделать, это использовать свойство для целевой папки, например так:

<resource>
   <targetPath>./alfresco/site-webscripts/customizations/${webscript.version}</targetPath>
   <filtering>true</filtering>
   <directory>${basedir}/src/main/resources/extension-webscripts</directory>
</resource>

С помощью этого кода создается просто папка "${webscript.version}", а не "1-0-66" (в случае, когда текущая версия - 1.0.66).

И рабочие, и не рабочие примеры находятся в одном <build> элемент и поэтому я предполагаю, что находятся в той же фазе.

Может кто-нибудь посоветовать мне, как я могу настроить конфигурацию, чтобы заставить это работать, или предложить альтернативный подход к замене "." с "-" как новое свойство, которое будет работать в этом случае?

2 ответа

Вы можете использовать gmaven-plugin Отличный плагин Maven действительно мощный

<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.4</version>
<executions>
  <execution>
    <id>change-properties</id>
    <phase>initialize</phase>
    <goals>
      <goal>execute</goal>
    </goals>
    <configuration>
      <source>
        if (something) {
            project.properties.myProperty = 'myPropertyValue'
        }
      </source>
    </configuration>
  </execution>
</executions>

вот еще один пример

надеюсь это поможет

Я смог обойти это, используя maven-antrun-plugin со следующим исполнением:

<execution>
  <id>rename-extensions-folder</id>
  <phase>prepare-package</phase>
  <goals>
     <goal>run</goal>
  </goals>
  <configuration>
     <target>
        <echo>Renaming folder</echo>
        <move file="${project.build.outputDirectory}/alfresco/site-webscripts/customizations/${project.version}"
              tofile="${project.build.outputDirectory}/alfresco/site-webscripts/customizations/${webscript.version}"/>
      </target>
  </configuration>
</execution>

... хотя я все еще хотел бы знать, как использовать пользовательское свойство без необходимости этого шага!

Другие вопросы по тегам