Подтвердить что ты не робот

Изменить исходный каталог в профиле maven

Я хочу использовать другой исходный каталог для определенного профиля maven, однако, когда я пытаюсь указать его в определении профиля, я получаю эту ошибку:

Unrecognised tag: 'sourceDirectory' (position: START_TAG seen ...<build>\r\n\t\t\t\t<sourceDirectory>... )

Определение в pom выглядит следующим образом:

<profile>
    <id>development</id>
    <build>
        <sourceDirectory>${project.build.directory}/new-src</sourceDirectory>
        .
        . 
        .
    </build>
</profile>

То, что я пытаюсь сделать, это обработать исходные файлы до его компиляции, если и только если этот профиль активен. Мой процесс изменит исходные файлы на лету, выбросит измененные источники в каталог "new-src" и скомпилирует этот каталог, как если бы это был обычный "src/main/java". Все остальное на жизненном цикле должно вести себя нормально. Если этот подход ошибочен, может ли кто-нибудь указать мне правильное направление?

4b9b3361

Ответ 1

В соответствии с документацией вы можете изменить только несколько параметров <build> в профиле, а <sourceDirectory> не является одним из них.

Я бы сконфигурировал основной <build> для получения источников из пути, определенного некоторым свойством (например, src.dir), установите для этого свойства значение src/main/java и переопределите его в настраиваемом профиле:

<project>
    ...
    <properties>
        <src.dir>src/main/java</src.dir>
    </properties>
    <build>
        <sourceDirectory>${src.dir}</sourceDirectory>
        ...
    </build>
    <profiles>
        <profile>
            <id>development</id>
            <properties>
                <src.dir>${project.build.directory}/new-src</src.dir>
            </properties>
        </profile>
    </profiles>
</project>

Ответ 2

См. модель Maven, не разрешено определять sourceDirectory в профиле. Единственное, что вы можете сделать, это указать исходный каталог в конфигурации плагина, если он доступен.