Return-Path: Delivered-To: apmail-ant-user-archive@www.apache.org Received: (qmail 69638 invoked from network); 24 Sep 2003 20:47:55 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 24 Sep 2003 20:47:55 -0000 Received: (qmail 14789 invoked by uid 500); 24 Sep 2003 20:47:33 -0000 Delivered-To: apmail-ant-user-archive@ant.apache.org Received: (qmail 14752 invoked by uid 500); 24 Sep 2003 20:47:33 -0000 Mailing-List: contact user-help@ant.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Users List" Reply-To: "Ant Users List" Delivered-To: mailing list user@ant.apache.org Received: (qmail 14733 invoked from network); 24 Sep 2003 20:47:32 -0000 Received: from unknown (HELO mail2.gfs.com) (208.240.15.6) by daedalus.apache.org with SMTP; 24 Sep 2003 20:47:32 -0000 Received: from GFS-MTA by mail2.gfs.com with Novell_GroupWise; Wed, 24 Sep 2003 16:47:14 -0400 Message-Id: X-Mailer: Novell GroupWise Internet Agent 6.0.3 Date: Wed, 24 Sep 2003 16:47:03 -0400 From: "Kyle Adams" To: Subject: Directory structure best practices Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N This subject has been covered in previous threads, most notably: http://marc.theaimsgroup.com/?l=3Dant-user&m=3D104492657316475&w=3D2 I would like to discuss the various approaches highlighted in this=20 e-mail. For convenience, I'll be copying examples from the initial = e-mail=20 in the thread above, though I would recommend reading through it. =20 As I see it, the four approaches (letters a-d) are essentially variations = on=20 two different build philosophies. The first philosophy (largly exemplified in a and b) states that within=20 a sufficiently large project, each subproject has it's own build=20 directories (source, test, build, etc.). This is also the approach=20 Maven takes, attempting to limit projects to one artifact (ie, JAR, = WAR,=20 EAR, etc.) per project (see=20 http://wiki.codehaus.org/maven/WhyYouCantCreateMultipleArtifactsInOneProjec= t) Example: -Projects/ -HumanResourcesProject/ build.xml +bin/ +build/ +src/ (etc) -Payroll/ build.xml +bin/ +build/ +src/ (etc) -PensionsAdmin/ build.xml +bin/ +build/ +src/ (etc) (etc) The second build philosophy is most apparent in letter d. This approach=20= specifies that the parent has the combined set of build directories and=20 subprojects are only separated out in the java packaging structure. Example: -Projects/ -HumanResourcesProject/ build.xml +bin/ +build/ -src/ -java/ -com/ -domain/ -hrproject/ +payroll/ +pensionsadmin/ +hrutilities/ (etc) +webapp/ +conf/ (etc) So my question - in the Ant user community's experience, which approach=20 works better for very large, complex projects? Maven favors the "each=20 subproject is pretty much independent", but it seems like that's a=20 violation of Martin Fowler's "Single Source Point"=20 (http://www.martinfowler.com/articles/continuousIntegration.html#N4000B9)= =20 principle. On the other hand, if you want to be able to do independent=20 release management (ie, version tagging, branching, etc.) of the various=20= subprojects, it would almost seem to be a necessity to keep them=20 separate. Perhaps some of this discussion could also supplement/take place on=20 ElementsOfAntStyle=20 (http://nagoya.apache.org/wiki/apachewiki.cgi?TheElementsOfAntStyle)? Thanks, Kyle _____ Kyle Adams | Java Developer | Gordon Food Service | 616-717-6162 --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For additional commands, e-mail: user-help@ant.apache.org