Инкрементная компиляция Java с помощью maven (как это делает Eclipse)

Я хочу использовать maven для создания проектов, в которых есть нерешенные проблемы компиляции.

Основная цель — упаковать и развернуть или запустить приложения, используя какие-то заглушки для классов, содержащих ошибки компиляции, как, насколько я понимаю, делает Eclipse (спасибо JDT Core).

Я настраиваю подключаемый модуль компилятора Java maven в соответствии с документацией Apache Maven по адресу с использованием не -Компилятор Java для использования компилятора Eclipse. Думая, что, возможно, следует установить некоторые аргументы для изменения поведения компилятора/построителя, я читал Помощь Eclipse — компиляция кода Java, но я не понимаю, какой вариант компилятора/построителя или их комбинация помогают.

Пока что следующая конфигурация плагинов компилятора maven java компилируется с использованием компилятора eclipse и упаковывает приложение, включая сгенерированный .class (байт-код jvm) только для классов java без ошибок компиляции. Чтобы получить такое поведение, просто нужно использовать компилятор eclipse (см.compileId и зависимость) и установить failOnError=false.

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <compilerId>eclipse</compilerId>
        <source>1.7</source>
        <target>1.7</target>
        <optimize>true</optimize>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
        <failOnError>false</failOnError>
        <compilerArguments>
            <org.eclipse.jdt.core.compiler.problem.fatalOptionalError>disabled</org.eclipse.jdt.core.compiler.problem.fatalOptionalError>
            <org.eclipse.jdt.core.compiler.problem.forbiddenReference>ignore</org.eclipse.jdt.core.compiler.problem.forbiddenReference>
        </compilerArguments>
    </configuration>

    <dependencies>
         <dependency>
              <groupId>org.codehaus.plexus</groupId>
              <artifactId>plexus-compiler-eclipse</artifactId>
              <version>2.3</version>
         </dependency>
    </dependencies>
</plugin>

С этой конфигурацией я мог бы запускать Java-приложение, если при выполнении не используются классы, не включенные для ошибок компиляции (поскольку заглушки не генерируются), но в контейнере Java EE загрузка классов завершится ошибкой, поэтому приложение никогда не может быть развернуто .

Я ценю любую помощь в этом.


person Guillermo    schedule 06.06.2014    source источник
comment
пожалуйста, обновите журналы ошибок!   -  person eliasah    schedule 06.06.2014
comment
@eliasah устанавливает failOnError false, на этапе компиляции все ошибки компиляции отображаются как предупреждения, как и предполагалось, и завершается упаковка с сообщением об успешном завершении для всего проекта. При значении true отображаются только ошибки компиляции, такие как проблемы с импортом, но ничего о структуре проектов или зависимостях между ними.   -  person Guillermo    schedule 09.06.2014


Ответы (1)


Просто для того, чтобы поделиться решением, в этот момент я просто заменяю plexus-compiler-eclipse на tycho-compiler-jdt, чтобы получить желаемое поведение.

Параметр proceedOnError указывает, что он должен продолжать компилироваться, несмотря на ошибки, выгружать файлы классов с проблемными методами или типами проблем, как справляться с ошибками компиляции.

Далее идет окончательный пример конфигурации.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <compilerId>jdt</compilerId>
        <source>1.7</source>
        <target>1.7</target>
        <optimize>true</optimize>
        <failOnError>false</failOnError>
        <compilerArguments>
            <proceedOnError/>
        </compilerArguments>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-compiler-jdt</artifactId>
            <version>0.22.0</version>
        </dependency>
    </dependencies>
</plugin>

Дополнительные примеры конфигурации плагинов можно найти в часто задаваемых вопросах Tycho. А возможные аргументы компилятора описаны в разделе Использование пакетного компилятора из Руководства пользователя по разработке Java (сайт справки Eclipse).

person Guillermo    schedule 07.07.2015