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

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

sql2java/pom.xml


<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.0modelVersion>
    <groupId>sql2javagroupId>
  <artifactId>sql2java-generatorartifactId>  
  <packaging>pompackaging>
  <version>1.0-SNAPSHOTversion>
  <name>sql2java-generatorname>
    
  <properties>
      
    <sql2java-config>../sql2java.propertiessql2java-config>
    <generated-src>../src/main/javagenerated-src>
    
  properties>
    <build>
        <plugins>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-antrun-pluginartifactId>
                <version>1.8version>

                <executions>
                    <execution>
                        <id>ant-buildid>
                        
                        <phase>generate-sourcesphase>
                        <goals>
                        <goal>rungoal>
                        goals>
                        <configuration>
                        <target>
                            
                            <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指定了要执行的具体任务(定义),那么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.pluginsgroupId>
        <artifactId>maven-antrun-pluginartifactId>
        <version>1.8version>      
        <configuration>
            <target>
                
                <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定义相比,就是少了两层,只将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》

你可能感兴趣的:(script,java)