如何禁用maven-compiler-plugin?

时间:2013-01-30 21:47:46

标签: maven maven-compiler-plugin

我有一个使用aspectj-compiler-plugin的maven项目。我使用intertype声明,因此在我的Java代码中引用了Aspect代码。因此,maven-compiler-plugin无法编译,因为它不编译方面代码。

我的问题是:如何禁止maven-compiler-plugin运行,因为它没有做任何有用的事情?

我有几种方法可以让这个项目进行编译,但它们是次优的:

  1. 将排除过滤器添加到maven-compiler-plugin。该插件仍将运行,但它不会尝试编译任何东西。问题是这打破了Eclipse中的ajdt项目配置器
  2. 将所有java代码移动到aspectj文件夹。这也感觉不对。

4 个答案:

答案 0 :(得分:29)

您可以通过将插件的阶段设置为无来禁用插件。

<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>

答案 1 :(得分:26)

在Maven 3中,以下内容将执行此操作,例如禁用clean插件:

   <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>更改为无效值(例如“无”)。如果你没有<id>(例如在金田邓的原始答案中 - 它已被编辑添加一个),它将无法正常工作,如你所发现的那样。

答案 2 :(得分:2)

maven-compiler-plugin首先执行的原因是因为你触发了一个默认的生命周期绑定。例如,如果您使用 mvn package 打包jar,它将在编译阶段触发compile:compile。

也许尽量不要使用默认生命周期,而是使用 mvn aspectj:compile

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html提供了有关maven默认生命周期绑定的更多信息

答案 3 :(得分:0)

配置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