web-dev-qa-db-ja.com

maven-compiler-pluginを無効にするにはどうすればよいですか?

私はaspectj-compiler-pluginを使用するMavenプロジェクトを持っています。タイプ間宣言を使用しているため、Javaコードにアスペクトコードへの参照があります。このため、maven-compiler-pluginはアスペクトコードをコンパイルしないため、コンパイルに失敗します。

私の質問は、maven-compiler-pluginが何の役にも立たないので、実行を無効にするにはどうすればよいですか?

このプロジェクトをコンパイルする方法はいくつかありますが、それらは最適ではありません。

  1. Maven-compiler-pluginに除外フィルターを追加します。プラグインは引き続き実行されますが、何もコンパイルしようとはしません。問題は、これがEclipseのajdtプロジェクトコンフィギュレーターを壊すことです。
  2. すべてのJavaコードをaspectjフォルダーに移動します。これも正しくありません。
26

プラグインのフェーズを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>
29
Jintian DENG

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の元の回答のように、編集されて追加されています)、ご存知のとおり、機能しません。

26
Simon Kissane

Maven-compiler-pluginが最初に実行される理由は、デフォルトのライフサイクルバインディングの1つをトリガーするためです。たとえば、mvn packageを使用してjarをパッケージ化する場合、コンパイルフェーズでcompile:compileがトリガーされます。

デフォルトのライフサイクルを使用しないようにしてください。代わりにmvnアスペクトj:compileを使用してください。

http://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html Mavenのデフォルトのライフサイクルバインディングに関する詳細情報があります

2
gerrytan

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
0