ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@yahoo.com>
Subject Re: Fix Package Structure
Date Thu, 08 Aug 2002 20:44:05 GMT
I was interested when I first saw this post, but
didn't know any way to do it without first being able
to iterate over the elements of a FileSet.  I was very
close to writing a task called foreach to do this. 
Having thought about it, I couldn't see any practical
way to implement it other than having it call other
Ant tasks.  Today from the list I learned that someone
else had already had the same idea!  Including lists
as well as FileSets is an improvement over what I had
thought of as well.  

The result is that this is VERY hacked together, but
it works using Ant core and optional tasks, plus
ant-contrib's foreach task to move Java files to their
proper place in a directory hierarchy based on their
package statements.  Very likely it could be improved
upon:

<project name="test" default="packagejava"
basedir=".">

	<taskdef
resource="net/sf/antcontrib/antcontrib.properties"/>

  <property environment="env" />
	<property name="flat.dir" value="src" />
	<property name="pkg.dir" value="pkgdsrc" />
	<property name="tmp.dir" value="tmp" />
	
	<target name="clean">
		<delete dir="${pkg.dir}"/>
	</target>

	<target name="packagejava">
		<property name="package" value="x" />
		<foreach target="copyjava" param="javafile"
inheritall="false">
			<fileset dir="${flat.dir}" includes="**/*.java" />
			<param name="dest.dir" value="${pkg.dir}" />
		</foreach>
		
	</target>
	
	<target name="checkpackage">
	
		<mkdir dir="${dest.dir}" />
		
		<echo message="movejava:  processing file
${javafile}." />
		
		<loadproperties srcfile="${javafile}">
			<filterchain>

				<stripjavacomments />

				<linecontainsregexp>
					<regexp pattern="^package" />
				</linecontainsregexp>

				<striplinebreaks linebreaks=";" />
				
			</filterchain>
		</loadproperties>
		
		<condition property="validpackage">
			<isset property="package" />
		</condition>
		
	</target>
	
	<target name="setpkgdir" if="validpackage">
		<mkdir dir="${tmp.dir}" />
		<echo message="packagedir=${package}"
file="${tmp.dir}/pkgdir.dat" />
		<replace file="${tmp.dir}/pkgdir.dat" token="."
value="/" />
		<loadproperties srcfile="${tmp.dir}/pkgdir.dat" />
		<delete dir="${tmp.dir}" />
		<copy file="${javafile}"
todir="${pkg.dir}/${packagedir}" />
	</target>
	
	<target name="blankpkgdir" unless="validpackage">
		<mkdir dir="${tmp.dir}" />
		<echo message="packagedir="
file="${tmp.dir}/pkgdir.dat" />
		<replace file="${tmp.dir}/pkgdir.dat" token="."
value="/" />
		<loadproperties srcfile="${tmp.dir}/pkgdir.dat" />
		<delete dir="${tmp.dir}" />
		<copy file="${javafile}" todir="${pkg.dir}" />
	</target>
	
	<target name="copyjava"
depends="checkpackage,setpkgdir,blankpkgdir" />
	
</project>


-Matt


--- "Shackelford, John-Mason" <ShacJo@ncs.com> wrote:
> Does anyone know of a task or utility available to
> fix the package structure
> on a source tree? 
> 
> I am generating javadocs with 1.4 which crashes when
> the package structure
> is wrong, but links in the source code--a feature I
> really like. The javadoc
> creation process runs from cron, and I can't afford
> to have one package name
> mistake break the whole thing. I've hacked together
> a perl script that will
> move files / create directories as necessary, but
> I'd really like to move
> this process into my ant buildfile so that it will
> be available to all.
> 
> Any ideas?
> 
> 
> John-Mason Shackelford
> 
> Software Developer
> NCS Pearson - Measurement Services
> 2510 North Dodge St.
> Iowa City, IA 52245
> 319-354-9200x6214
> shacjo@ncs.com
> 
> --
> To unsubscribe, e-mail:  
> <mailto:ant-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:ant-user-help@jakarta.apache.org>
> 


__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@jakarta.apache.org>


Mime
View raw message