构建帮助程序Maven插件属性不适用于资源targetPath

时间:2016-04-29 08:12:22

标签: maven build-helper-maven-plugin

我使用Build Helper Maven Plugin构建一个属性为" - " for"。" ...我的配置如下:

<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>

使用此代码,创建的文件夹只是&#34; $ {webscript.version}&#34;而不是&#34; 1-0-66&#34; (在当前版本为1.0.66的情况下)。

工作和非工作示例都在同一个<build>元素中,因此我假设处于同一阶段。

有人可以告诉我如何调整配置以使其正常工作,或建议替代方法以替代&#34;。&#34;用&#34; - &#34;作为一个在这种情况下有效的新财产?

2 个答案:

答案 0 :(得分:0)

我能够使用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>

...虽然我仍然非常想知道如何在不需要这一步的情况下使用自定义属性!

答案 1 :(得分:0)

你可以使用gmaven-plugin groovy 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>

这是另一个Example

希望这会有所帮助