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 条评论
登录 后参与评论

相关文章

来自专栏沃趣科技

ASM 翻译系列第三十弹:高级知识 Physical metadata replication

原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 DBGeeK社群联合出品 Physical metadata replicat...

3394
来自专栏lulianqi

AutoTest简介

       在离职后的一段时间里,个人总结了过去几年工作的心得,结合以往的工作经验。重新思考并重构了前些年做的一些东西(主要是测试相关),产生了设计AutoT...

682
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native升级指南|v0.40+升级适配经验与心得

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 告诉大家一个好消息,为大家精心准备的React N...

3558
来自专栏情情说

单点登录与权限管理本质:权限管理介绍

前面几篇文章介绍了单点登录的本质,包括cookie、session、重定向的基本概念,单点登录的基本交互流程,cookie的重要性和安全问题。单点登录能够确保:...

2525
来自专栏https://www.cnblogs.com/L

【ElasticSearch篇】--ElasticSearch从初识到安装和应用

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,在企业中全文搜索时,特...

932
来自专栏Web 开发

用PHP来执行定时任务

上个月有个需求,用PHP写了一个接口给SDK使用,原始数据使用MySQL进行记录。热数据用Redis进行+1的原子操作。每隔一定时间,由一个PHP脚本(姑且就命...

680
来自专栏编程

自己打造Android Studio插件,提升开发效率

如果能够让重复工作变得自动化,比如我通过打造一个插件,提升了5%的工作效率。节省下来的时间,干点什么不好呢?

1.1K10
来自专栏JAVA烂猪皮

Zookeeper的简介和应用场景

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务 A、zookeeper是为别的分布式程序服务的 B、Zookeeper本身就...

711
来自专栏张善友的专栏

针对.NET开发者的NuoDB 1.1发布

NuoDB 1.1包含ADO.NET驱动、LINQ和EF提供程序,支持64位Windows和Azure,同时还对性能做了提升。 NuoDB是一个分布式云数据库系...

1809
来自专栏喵了个咪的博客空间

[喵咪MQ(2)]RabbitMQ单机模式使用

[喵咪MQ(2)]RabbitMQ单机模式使用 ? 哈喽!本周我们又见面了,今天呢我们接着说MQ软件RabbitMQ的故事,在上小节以及成功的安装了Rabbit...

2625

扫码关注云+社区