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

60 篇文章 1 订阅

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值