Как отключить плагин maven-compiler?
У меня есть проект maven, который использует плагин aspectj-compiler. Я использую intertype-объявления, поэтому в коде Java есть ссылки на код Aspect. Из-за этого плагин maven-compiler не скомпилируется, поскольку он не скомпилирует код аспекта.
Мой вопрос: как отключить запуск maven-компилятора, потому что он ничего не полезен?
Есть несколько способов, которыми я могу собрать этот проект, но они не оптимальны:
- Добавить фильтры исключений в maven-compiler-plugin. Плагин все равно будет работать, но он ничего не попытается скомпилировать. Проблема в том, что это нарушает конфигуратор проекта ajdt в Eclipse
- Переместите все java-коды в папки aspectj. Это тоже не так.
Ответы
Ответ 1
Вы можете отключить плагин, установив фазу плагина на none.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ответ 2
В Maven 3 это выполнится, например, отключив чистый плагин:
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>default-clean</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
Тот же метод может быть использован для любого другого плагина, определенного в супер-POM, тип упаковки или родительский POM. Ключевым моментом является то, что вы должны скопировать <id>
, показанный help:effective-pom
, и изменить <phase>
на недопустимое значение (например, "none" ). Если у вас нет <id>
(например, в исходном ответе Jintian DENG - с тех пор он был отредактирован, чтобы добавить его), он не будет работать, как вы обнаружили.
Ответ 3
Причина, по которой maven-compiler-plugin выполняется в первую очередь, заключается в том, что вы запускаете одно из привязок жизненного цикла по умолчанию. Например, если вы упаковываете банку с помощью mvn package, она вызывает компиляцию: компиляция на этапе компиляции.
Возможно, попробуйте не использовать жизненный цикл по умолчанию, но вместо этого используйте mvn aspectj: compile.
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html содержит дополнительную информацию о привязках жизненного цикла maven по умолчанию
Ответ 4
Либо настройте параметр skipMain
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<skipMain>true</skipMain>
</configuration>
</plugin>
</plugins>
</build>
Или передайте свойство maven.main.skip
:
mvn install -Dmaven.main.skip=true