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

Как отключить плагин maven-compiler?

У меня есть проект maven, который использует плагин aspectj-compiler. Я использую intertype-объявления, поэтому в коде Java есть ссылки на код Aspect. Из-за этого плагин maven-compiler не скомпилируется, поскольку он не скомпилирует код аспекта.

Мой вопрос: как отключить запуск maven-компилятора, потому что он ничего не полезен?

Есть несколько способов, которыми я могу собрать этот проект, но они не оптимальны:

  • Добавить фильтры исключений в maven-compiler-plugin. Плагин все равно будет работать, но он ничего не попытается скомпилировать. Проблема в том, что это нарушает конфигуратор проекта ajdt в Eclipse
  • Переместите все java-коды в папки aspectj. Это тоже не так.
4b9b3361

Ответ 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