maven-compiler-plugin 3.0 не компилирует папку ресурсов в maven

Я переношу форму проекта Maven 2 в Maven 3. Я также воспользовался возможностью, чтобы обновить версию некоторых плагинов, а именно maven-compiler-plugin, с 2.1 до 3.0 и maven-resources-plugin до 2.6.

У меня есть интерфейс под ресурсами как таковой:

public interface Version {
  public static final String VERSION = "${project.version}";
}

И в моем pom.xml при сборке у меня есть:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Раньше это работало. Но после обновления до Maven 3 компиляция завершается с ошибкой, поскольку невозможно найти Version.

Кажется очевидным, что он не компилирует версию или не включает ее в путь к классам.

Есть ли какие-то изменения в Maven 3 или последних версиях плагина maven-compiler-plugin, которые могут повлиять на это? От прочтения документации ничего не изменилось...


person halfwarp    schedule 04.01.2013    source источник
comment
Как это работало в Maven 2? Как ты выглядел, пом? Потому что обычно не компилируется java-файл, который находится в src/main/resources. Спрашивается, зачем вам такие вещи? У вас есть версия, которая является частью координат артефакта?   -  person khmarbaise    schedule 04.01.2013
comment
Как написано, вы не даете достаточно информации. Вы выполняете какую-то форму генерации кода, но неясно, как вы это делаете (потому что простое копирование ресурса с преобразованием этого не сделает). Я предлагаю запустить как старую, так и новую версии с -X, чтобы увидеть, чем они отличаются.   -  person parsifal    schedule 04.01.2013
comment
На самом деле проблема здесь с maven-compiler-plugin 3.0. С 2.1 работает нормально.   -  person halfwarp    schedule 04.01.2013


Ответы (1)


Вы должны указать целевую папку примерно так, как показано ниже. В настоящее время, если вы посмотрите в свою целевую папку, у вас, вероятно, есть файл Version.java. Добавив targetPath, он поместит отфильтрованный файл .java в вашу папку src/java и скомпилирует его в вашу целевую папку.

<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
     <includes>
       <include>**/*.java</include>
    </includes>
    <targetPath>${basedir}/src/main/java/</targetPath>
</resource>
person Manuel Quinones    schedule 04.01.2013
comment
Да, это было так. Мне не хватало targetPath. Спасибо! - person halfwarp; 04.01.2013
comment
@halfwarp Другими словами, это был НЕ плагин maven-compiler. - person khmarbaise; 04.01.2013