代码之家  ›  专栏  ›  技术社区  ›  Dean Povey

复制资源时完全搜索和替换源文件中的字符串

  •  33
  • Dean Povey  · 技术社区  · 15 年前

    我有一些使用包前缀的Java源文件(它们正在模拟一些JDK类)。我使用这些带有前缀的文件来运行一些单元测试。如果测试通过,我想生成一个包含源文件但从所有Java文件中移除包前缀的jar。

    我正在使用Maven进行构建。有人知道怎么做吗?本质上,我想要的是类似于资源插件过滤功能的东西,但是它可以进行适当的搜索和替换(例如:s/my.package.prefix.//g),而不是过滤$vars。

    2 回复  |  直到 13 年前
        1
  •  43
  •   cedric.walter    13 年前

    您也可以使用

    http://code.google.com/p/maven-replacer-plugin/

    100%Maven,做你想做的事等等

        2
  •  27
  •   Dean Povey    15 年前

    这可以用antrun插件来解决。首先,需要将源复制到目标目录,其中:

    <build>
      ...
      <resources>
        <resource>
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </resource>
      </resources>
      ...
    </build>
    

    其次你用 replace 使用准备包阶段替换文件的Antrun插件的任务

    <build>
        ...
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <configuration>
              <tasks>
                <replace token= "my.package.prefix." value="" dir="target/classes">                                 
                  <include name="**/*.java"/>
                </replace>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </build>
    

    这将在流程资源阶段将源文件复制到目标/类,在准备包阶段对目标/类目录中的文件进行搜索和替换,最后在包阶段将它们损坏。