Полный поиск и замена строк в исходных файлах при копировании ресурсов - PullRequest
33 голосов
/ 04 февраля 2010

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

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

Ответы [ 2 ]

44 голосов
/ 25 июля 2011

Вы также можете использовать

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

100% Maven и делать именно то, что вы хотите, и даже больше

27 голосов
/ 04 февраля 2010

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

Это скопирует исходные файлы в target / classes на этапе process-resources, выполнит поиск и замену файлов, находящихся в каталоге target / classes на этапе prepare-package, и, наконец, они будут собраны в пакет. фазы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...