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

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》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

Linux文件的软链接和硬链接

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

600
来自专栏吴柯的运维笔记

4个for/while循环语句及case语句实用脚本

脚本1:工作中如果要批量关机,可使用以下脚本查看192.168.4.0网段哪些是关机,哪些是开机状态。 ? 备注:1.{1..254}也可写作`seq 1 ...

2585
来自专栏我和PYTHON有个约会

29.企业级开发进阶1:文件输入输出流[IO操作]

农历五月初一 宜声明变量"a",提交代码;忌打DOTA,提交BUG 适宜方位:坐西朝东 多饮水、鲜奶,女神亲近指数较高

612
来自专栏Linux运维学习之路

MySQL数据库数据信息迁移

环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1...

2046
来自专栏kangvcar

Ansible极简教程

2412
来自专栏应用案例

VBA创建Access数据库的4种方法

Excel由于本身的局限性,存储数据量过大的时候,往往会导致工作簿假死无反应,电脑卡顿等情况。那么,将数据存取到Access数据库中就是一种好的解决方法。今天,...

31310
来自专栏我的博客

简单的表单验证

<head> <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /> ...

2665
来自专栏北京马哥教育

数据库之mariadb整体概述

一、数据库的安装方式及其安装步骤 1、安装方式 rpm包安装,yum安装,二进制包安装,编译安装 2、安装步骤 (本文是使用二进制包安装) 1)下载m...

3776
来自专栏GreenLeaves

Oracle 单实例数据库安装和real application clusters数据库安装的区别

 在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库。 单实例数据库模式...

1918
来自专栏小李刀刀的专栏

[译]Laravel 5.0 之运行环境及环境变量

本文译自 Matt Stauffer 的系列文章. ---- 如果你关注我的博客有段时间了,那你应该曾经见过我在 Laravel 环境检测问题上的各种尝试,特别...

3476

扫码关注云+社区