maven:调用ant执行build.xml的两种方式

来源:互联网 发布:php极光推送原理 编辑:程序博客网 时间:2024/05/01 09:53

sql2java是通过ant脚本组织项目来实现java代码生成的,所以要使用sql2java就必须使用ant来执行build.xml脚本。如果自己项目是用maven来组织管理的,那么要使用sql2java来生成代码就涉及到maven执行ant脚本的问题。
maven提供了执行ant脚本的功能,这里就用到了maven插件maven-antrun-plugin。

sql2java/pom.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>    <groupId>sql2java</groupId>  <artifactId>sql2java-generator</artifactId>    <packaging>pom</packaging>  <version>1.0-SNAPSHOT</version>  <name>sql2java-generator</name>    <!-- 调用 ant 执行 build.xml 完成jav代码生成  -->  <properties>      <!--        sql2java参数定义,参见build.xml      调用方式      mvn  generate-sources \            -Dsql2java-config=../sql2java.properties \            -Dgenerated-src=../src/main/java \            -Ddriver-jar=../lib/mysql-connector-java-5.1.43-bin.jar      -->    <sql2java-config>../sql2java.properties</sql2java-config>    <generated-src>../src/main/java</generated-src>    <!--<driver-jar>../lib/mysql-connector-java-5.1.43-bin.jar</driver-jar>-->  </properties>    <build>        <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-antrun-plugin</artifactId>                <version>1.8</version>                <executions>                    <execution>                        <id>ant-build</id>                        <!--绑定插件到代码生成阶段执行-->                        <phase>generate-sources</phase>                        <goals>                        <goal>run</goal>                        </goals>                        <configuration>                        <target>                            <!--                            执行builx.xml脚本,                            并向build.xml传递三个参数 sql2java-config,generated-src,driver-jar                            -->                            <ant antfile="build.xml" target="rebuild" inheritAll="false">                                <property name="sql2java-config" value="${sql2java-config}"/>                                <property name="generated-src" value="${generated-src}"/>                                <property name="driver-jar" value="${driver-jar}"/>                            </ant>                        </target>                        </configuration>                    </execution>            </executions>        </plugin>        </plugins>    </build></project>

指定生命周期阶段(phase)

上面的脚本中将antrun插件绑定在generate-sources 生命周期(phase),并给antrun指定了要执行的具体任务(<target></target>定义),那么maven执行时,只要指定生命周期(phase)为generate-sources,就可以执行buid.xml脚本了,如下:

mvn  generate-sources \    -Dsql2java-config=../sql2java.properties \    -Dgenerated-src=../src/main/java \    -Ddriver-jar=../lib/mysql-connector-java-5.1.43-bin.jar

指定插件目标(goal)

sql2java/pom.xml中antrun插件也可以如下定义,即不将它绑定到任何生命周期(phase),而是通过在命令行指定执行插件目标(goal)的方式来执行build.xml脚本:

<plugin>    <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-antrun-plugin</artifactId>        <version>1.8</version>              <configuration>            <target>                <!--                执行builx.xml脚本,                并向build.xml传递三个参数 sql2java-config,generated-src,driver-jar                -->                <ant antfile="build.xml" target="rebuild" inheritAll="false">                    <property name="sql2java-config" value="${sql2java-config}"/>                    <property name="generated-src" value="${generated-src}"/>                    <property name="driver-jar" value="${driver-jar}"/>                </ant>            </target>        </configuration></plugin>

上面的代码与本文最开始的sql2java/pom.xml<plugin></plugin>定义相比,就是少了<execution><executions></execution></executions>两层,只将configuration元素提到最上层。
这样以来,意思就变了,maven调用的方式也要做相应的修改,就要在命令行指定插件目标(goal),而不是生命周期阶段(phase)

mvn  antrun:run \    -Dsql2java-config=../sql2java.properties \    -Dgenerated-src=../src/main/java \    -Ddriver-jar=../lib/mysql-connector-java-5.1.43-bin.jar

参考资料

build.xml完整代码参见:https://github.com/10km/sql2java-2-6-7/blob/custom/build.xml
pom.xml完整代码参见 :https://github.com/10km/sql2java-2-6-7/blob/custom/pom.xml
《maven-antrun-plugin》

原创粉丝点击