Полный поиск и замена строк в исходных файлах при копировании ресурсов

У меня есть некоторые исходные файлы java, которые используют префикс пакета (они эмулируют некоторые классы JDK). Я использую эти файлы с префиксом для выполнения некоторых модульных тестов. Если тесты проходят, я хочу создать банку, содержащую исходные файлы, но с префиксом пакета, удаленным из всех java файлов.

Я использую maven для сборки. Кто-нибудь знает, как это сделать? По сути, я хочу что-то вроде функции фильтрации плагинов ресурсов, но это делает правильный поиск и замену (например: s/my.package.prefix.//g), а не фильтрацию на ${vars}.

Ответ 1

Это можно решить с помощью 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>

Это скопирует исходные файлы в целевые/классы на фазе технологических процессов, выполнит поиск и замену на файлы inplace в каталоге target/classes на этапе подготовки пакета и, наконец, они будут сотрясаться в пакете фазы.