maven插件仅在用户首选项时运行

时间:2013-08-05 16:28:42

标签: java apache maven maven-3

是否有通用方法为任何maven插件执行此操作 - 根据用户首选项运行/根据属性文件禁用它?

使用com.mysema.querydsl创建一个正常工作的maven插件,现在想要更改,只有在提供了特定的标志/命令行选项时才会运行。

<plugin>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-maven-plugin</artifactId>
            <version>${querydsl-maven-plugin.version}</version>
            //executions
            <configuration>
                <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>

                <jdbcUrl>jdbc:mysql://myurlk:port/db</jdbcUrl>
                <jdbcUser>id1</jdbcUser>
                <jdbcPassword>ccc</jdbcPassword>
                <packageName>com.sample</packageName>
                <targetFolder>${project.basedir}/src/main/java</targetFolder>
                <schemaPattern>APP</schemaPattern>
                    //goal prefix here?
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.driver.version}</version>
                </dependency>
            </dependencies>
        </plugin>

试图添加

            <executions>
                <execution>
                 <id>execution1</id>
                  <phase>test1</phase>
                    <goals>
                        <goal>export</goal>
                    </goals>
                </execution>
            </executions>

    and a goal prefix       
                                 <goalPrefix>mysema1</goalPrefix>

但不行。想要一种方法,这样当我们进行默认

时,这个插件就不会运行了
  

mvn clean install

但是需要添加另一个标志才能让它运行? 使用Apache Maven 3.0.4

2 个答案:

答案 0 :(得分:3)

您是否尝试将插件执行放入Maven个人资料中?有几个触发器可以为构建启用配置文件(例如,OS,Java版本,属性值或命令行上的配置文件ID本身)。 有关详细信息,请参阅http://maven.apache.org/guides/introduction/introduction-to-profiles.html

答案 1 :(得分:1)

定义配置文件,将插件定义添加到配置文件中,并为配置文件添加属性触发器,如下所示:

<project>
  ...

  <profiles>
    <profile>
      <id>profile-id</id>
        <activation>
          <property>
            <name>myProperty</name>
          </property>
        </activation>
      <build>
        <plugins>
          <plugin>
            ...
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>

使用mvn clean install构建yout项目时,插件将不会被执行,当您使用mvn clean install -DmyPropertymvn clean install -Pprofile-id构建项目时,您的插件将被执行。在第二种情况下,配置文件的属性激活触发器已过时。