使用ant从多个Source Folder的项目中导出jar包(续)

本文介绍了一种改进的Java编译解决方案,通过配置sourcepath避免了不必要的编译操作,提高了编译效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上回给大家分享了一种解决方案(以下简称方案一),但该方案存在一个弊端:第一次编译时需要编译工程中所有的java文件,包括跟该SourceFolder中源码无关的java文件。为解决这一问题,我又研究了ant的使用,最终找到了如下解决方案(以下简称方案二)。方案二与方案一思路基本一致,区别仅在于第一次编译。在方案二中,第一次编译时,我配置了sourcepath。这样,当ant编译指定目录下的文件时如果需要引用的java文件不在该SourceFolder目录下,就可以去配置的sourcepath中查找编译。下面贴出配置信息:

<?xml version= "1.0"?>
<project default="clean" basedir=".">
	<property name="base" value="." />
	<property name="src.1.dir" value="src1" />
	<property name="src.2.dir" value="src2" />
	<property name="src.3.dir" value="src3" />
	<property name="classes.1.dir" value="bin1" />
	<property name="temp.dir" value="temp" />
	<property name="jarFile" value="D:/hello.jar" />

	<!-- 初始化,创建两个临时文件 -->
	<target name="init">
		<!-- 用于存储指定目录编译后产生的class文件 -->
		<mkdir dir="${classes.1.dir}"/>
		<!-- 用于存储指定目录编译后产生的class文件以及相关class文件 -->
		<mkdir dir="${temp.dir}"/>
	</target>
	
	<!-- 编译java文件 -->
	<target name="compile" depends="init">
		<!-- 编译指定目录下的java文件及其相关文件 -->
		<javac srcdir="${src.1.dir}" destdir="${temp.dir}">
			<sourcepath path="${src.2.dir}"></sourcepath>
			<sourcepath path="${src.3.dir}"></sourcepath>
		</javac>

		<!-- 使用临时目录中的class文件编译指定目录下的java文件 -->
		<javac srcdir="${src.1.dir}" destdir="${classes.1.dir}">
			<classpath>
				<pathelement location="${temp.dir}"/>
			</classpath>
		</javac>
	</target>

	<!-- 打包class文件 -->
	<target name="package" depends="compile">
		<jar destfile="${jarFile}" basedir="${classes.1.dir}">
		</jar>
	</target>

	<!-- 清理,删除临时文件 -->
	<target name="clean" depends="package">
		<delete dir="${classes.1.dir}" />
		<delete dir="${temp.dir}" />
	</target>

</project>

项目结构:

项目源码(包含上述配置信息):点击下载(http://download.youkuaiyun.com/detail/binbinxyz/4152665)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值