ant -version
- name: Download + install test libraries
- run: ./mvnw -B --settings .mvn/settings-read-github-packages.xml --file libx/pom.xml compile
+ run: ./mvnw -B --settings .mvn/settings-read-github-packages.xml --file lib/pom.xml compile
- name: Compile + package code
run: ./mvnw -B --settings .mvn/settings-read-github-packages.xml --file pom.xml -DskipTests package
# No idea where these come from
bin/
+# Downloaded libraries used during tests
+/lib/ant/
+/lib/asm/
+/lib/commons/
+/lib/jarjar/
+/lib/jdtcore-aj/
+/lib/junit/
+/lib/regexp/
+/lib/saxon/
+
# When using a RAM disk to speed up development, see how-to in docs/developer/ram-disk/settings-ramdisk.xml
/.mvn/maven.config
/.mvn/settings-ramdisk.xml
<target>
<echo message="unzip patched jdtcore" />
<unzip
- src="${project.basedir}/../libx/jdtcore-aj/jdtcore-for-aspectj.jar"
+ src="${project.basedir}/../lib/jdtcore-aj/jdtcore-for-aspectj.jar"
dest="target/jdtcore-unzipped" />
</target>
</configuration>
<target>
<echo message="unzip patched jdtcore sources" />
<unzip
- src="${project.basedir}/../libx/jdtcore-aj/jdtcore-for-aspectj-src.zip"
+ src="${project.basedir}/../lib/jdtcore-aj/jdtcore-for-aspectj-src.zip"
dest="target/jdtcore-unzipped-src" />
</target>
</configuration>
</jar>
<!-- missing from this are the jdtDepends.jar src files -->
- <unzip dest="${aj.src.dir}/jdtsrc" src="${aspectj.modules.dir}/libx/jdtcore-aj/jdtcore-for-aspectj-src.zip"/>
+ <unzip dest="${aj.src.dir}/jdtsrc" src="${aspectj.modules.dir}/lib/jdtcore-aj/jdtcore-for-aspectj-src.zip"/>
<!-- ajde/ajde.core/ajdoc/asm/bridge/loadtime/org.aspectj.ajdt.core/taskdefs/util/weaver5 -->
<jar destfile="${aj.src.dir}/aspectjtools${build.version}-src.jar">
<fileset dir="${aj.src.dir}/jdtsrc">
allfiles="$ajdir/allfiles.lst"
onefile="$ajdir/onefile.lst"
srcdirs="ajbrowser ajde asm bridge org.aspectj.ajdt.core runtime taskdefs util weaver"
-libs="lib/ant/lib/ant.jar lib/bcel/bcel.jar libx/jdtcore-aj/jdtcore-for-aspectj.jar"
+libs="lib/ant/lib/ant.jar lib/bcel/bcel.jar lib/jdtcore-aj/jdtcore-for-aspectj.jar"
classesDir="$ajdir/classes"
ajc110=$aj110/bin/ajc
ajdir=`echo "$ajdir" | sed 's|/cygdrive/\([a-zA-Z]\)/|\1:/|'`
allfiles="$ajdir/allfiles.lst"
srcdirs="ajbrowser ajde asm bridge org.aspectj.ajdt.core runtime taskdefs util weaver"
-libs="lib/ant/lib/ant.jar lib/bcel/bcel.jar libx/jdtcore-aj/jdtcore-for-aspectj.jar"
+libs="lib/ant/lib/ant.jar lib/bcel/bcel.jar lib/jdtcore-aj/jdtcore-for-aspectj.jar"
classesDir="$ajdir/classes"
cp=""
sep=""
for i in "$1" ../lib/bcel/bcel.jar \
- ../libx/jdtcore-aj/jdtcore-for-aspectj.jar \
+ ../lib/jdtcore-aj/jdtcore-for-aspectj.jar \
; do
cp="${cp}${sep}`canonicalPath "$i"`"
[ -z "${sep}" ] && sep=";"
+++ /dev/null
-For installation instructions see the manual in the docs subdirectory
-or online at <http://ant.apache.org/manual/index.html>.
+++ /dev/null
-This file contains the PGP keys of various developers.
-
-Users: pgp < KEYS
- gpg --import KEYS
-Developers:
- pgp -kxa <your name> and append it to this file.
- (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
- (gpg --list-sigs <your name>
- && gpg --armor --export <your name>) >> this file.
-
-Type Bits/KeyID Date User ID
-pub 1024/FEECAAED 1998/11/11 Stefan Bodewig <bodewig@bost.de>
- Stefan Bodewig <bodewig@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3i
-
-mQCNAzZJoiMAAAEEAMzhUxTOC20Nprp6K4nLTiARt+EXii/dovNWWcfzZcYXi/lX
-r3zpUTTZxlKQpd4RaHjFmGgoOraZE4jCRFARVcFJgYmGUKpcWJZO7YKL36WUizTM
-+dyB2ycOtzlty1W5VmRL3FGqo67pKA9F/QHg3NSu9hY1W9xPPK7Kq3f+7KrtAAUR
-tCBTdGVmYW4gQm9kZXdpZyA8Ym9kZXdpZ0Bib3N0LmRlPokAlQIFEDZSrGXHcgyK
-jiW9zQEBshEEAMlG4qVjKp4/agdJG56M6izx9oaKecFLXHQJrFUy3w2PvZHFYtXc
-osXKorX6bPrE8uB57MxbY2WapKeVRodlG0+j39vAf501duK8q2rktfWt9Cl4JjJ4
-DbWhSWfV1ci62u2gCxwYQe22F9Wh+vhOR5NK9RTbSKhupdlFsnrk/i7xiQCVAwUQ
-NkmiI67Kq3f+7KrtAQGdxQQAlcFOzSv7G6M4uGbgvw7IGgrhx7rawtIyv9hLXgVC
-7ua9xaZV8G0Fl9gh8RnbdcZ4R/aT+KIiAFaslfZ3t6hlC4MTbnAJqvdS/NO98ZkJ
-YvnzZSKHflAbd5gyE7IVxBC9/xRlF/Wls5sYNwb6RjoRCaOjxN/y3WCLa3Va101v
-zNy0I1N0ZWZhbiBCb2Rld2lnIDxib2Rld2lnQGFwYWNoZS5vcmc+iQCVAwUQOxIo
-BK7Kq3f+7KrtAQGn6gP/SBACdHakA4H//otpyESSrk4PmyOaYF0Kyok43Gee2mT+
-m9+jZ3jLcC0oav6iH+otL/lhk9t/JDM8LjD2kAkdWWoIvvuPyCx97gOzojIo0Ve2
-1wuxJTF/VIjwyOtE8FzE7p4tkc6EubVpeZkV9Pq9HFRBCUcyKJDLnF4tbstScLU=
-=OBLe
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub 1024D/51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
-sig 3 51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
-sig 5F6B8B72 2002-01-11 Stefan Bodewig <bodewig@apache.org>
-uid Conor MacNeill <conor@apache.org>
-sig 3 51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
-sig 5F6B8B72 2002-01-11 Stefan Bodewig <bodewig@apache.org>
-sub 1024g/D1ECBA5D 2001-05-29
-sig 51898504 2001-05-29 Conor MacNeill <conor@cortexebusiness.com.au>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQGiBDsTqygRBACiZckNdclTlQFonLaIKBFGhMy0KKByw0x8XA4iwdbCXuF6xNIc
-HIFHajJ74AHchQ4d8xtomBy6b8yvFgWVeaZensvn69BlLeqGdyeJRzfPt6TgRnzZ
-2eWhb0HXdG3JwxL/2BabDhHfs4YJOrgB/vhRFQku6oCMRiBPtJj2werD6wCg0/zp
-jacYTw6+CR+sVvneCNyySFED/R3j10c4RnR8djgv1jKT8CKPuHYraupI9INEe+I6
-7qWjtJ02GzvMO6TElAtUsf4aysu45GgwkwEBnuG6mYb3Pq0V2c5tJc2A3Tj3DrdR
-i3HUNwurbus76I0sPyyENPu12QPeC6mvWLEsxVJ9o0hRKFayGvYUmrwWK9UFLjvp
-p9cXBACDHgLn7MAVLqUdYhRrUj/M+GOUpvBikEgoJJrEUmb5X4+++dffMh5HBIO4
-5LA11qEKuM2xnKqOilP7NLYXz1Fe0ocqv0jsHB4SprFTTai7ma31uwuRQvCQXVv1
-yJ5CLqYda64h/UA2kmmR2dfopmvDogYEMz/HU5voozxe7BEI7bQhQ29ub3IgTWFj
-TmVpbGwgPGNvbm9yQGFwYWNoZS5vcmc+iFcEExECABcFAjsTqygFCwcKAwQDFQMC
-AxYCAQIXgAAKCRCBBGRPUYmFBDgIAKCZztXqKhK6kXOnoGy7opCNmWU0lwCgsPDa
-4m+ruW3ch0rfbqtR75S52R+IRgQQEQIABgUCPD6eTgAKCRCiEVrhX2uLcqCcAKCr
-1Wylqju9YjBi5Twej9ze69JFBQCeOaMgo6yjnkcV3PnVInLlaMwPr5q0LUNvbm9y
-IE1hY05laWxsIDxjb25vckBjb3J0ZXhlYnVzaW5lc3MuY29tLmF1PohXBBMRAgAX
-BQI7E6xMBQsHCgMEAxUDAgMWAgECF4AACgkQgQRkT1GJhQTY0ACgmZmKheHzjPJs
-5hybpyvnvEiPYqYAn2+ryxdtz8XyOMExGRmHNlhG7svsiEYEEBECAAYFAjw+nlUA
-CgkQohFa4V9ri3JYYACg1WN+NCptfKVP1mbrIa+0ajztsiIAnAn+m70iwRRFZCxr
-jcULoY5SjyTLuQENBDsTqy0QBACfsCxJ6iCtgX8zjlVtMsMfDqu72x5sYatWKn8c
-u+4Oj5mi0x6azZIhwCa+K3ihLVOyG1mCRnzztGTIxWYRhq3TESIVOfgm+NgLGrmA
-XUTFyCT+21TExLCpuVZKmUHsWXLxDtfQ1diPeQpiQ8+Fvb/4jLGFjFIrQ2VjtFQn
-kumkSwADBgP9H0bF4hdMuVEcSJ9imxSoJshcOOA3Vd2+YiCTZhBygWM49wY5jNos
-/DArIjNCE53IlOu/UtHB2jqkSqjF0soGYsUjeCWouiTP9hLuMKPjnqj9ryJPTDKz
-nTCZ4TuB5CtzrKTlWLmPCPpFsGqe4KjMeKg/mqGqjPKl97xgStK9N9GIRgQYEQIA
-BgUCOxOrLQAKCRCBBGRPUYmFBMM6AJsF3FFyZGEmbt9aGG1W/u0oI9mcLgCfQyJ+
-aalbspazea4J9zgi59SSwOM=
-=cBdR
------END PGP PUBLIC KEY BLOCK-----
-
-pub 1024D/5F6B8B72 2001-05-28 Stefan Bodewig <bodewig@apache.org>
-sig 3 5F6B8B72 2001-05-28 Stefan Bodewig <bodewig@apache.org>
-sig 51898504 2002-01-11 Conor MacNeill <conor@cortexebusiness.com.au>
-sig 3 F88341D9 2003-03-17 Lars Eilebrecht <lars@eilebrecht.org>
-sig 3 2261D073 2003-03-17 Astrid Keáler (Kess) <kess@kess-net.de>
-sig 21D0A71B 2003-03-17 Dirk-Willem van Gulik <dirkx@apache.org>
-sig 75A67692 2003-03-18 Erik Abele <erik@codefaktor.de>
-sig B3B2A12C 2003-05-20 ct magazine CERTIFICATE <pgpCA@ct.heise.de>
-sig 3 8103A37E 2003-04-04 Andre Malo <nd@apache.org>
-uid Stefan Bodewig <bodewig@bost.de>
-sig 3 5F6B8B72 2001-05-28 Stefan Bodewig <bodewig@apache.org>
-sig 51898504 2002-01-11 Conor MacNeill <conor@cortexebusiness.com.au>
-sig 3 F88341D9 2003-03-17 Lars Eilebrecht <lars@eilebrecht.org>
-sig 3 2261D073 2003-03-17 Astrid Keáler (Kess) <kess@kess-net.de>
-sig 21D0A71B 2003-03-17 Dirk-Willem van Gulik <dirkx@apache.org>
-sig 75A67692 2003-03-18 Erik Abele <erik@codefaktor.de>
-sig B3B2A12C 2003-05-20 ct magazine CERTIFICATE <pgpCA@ct.heise.de>
-sig 3 8103A37E 2003-04-04 Andre Malo <nd@apache.org>
-uid Stefan Bodewig <stefan.bodewig@freenet.de>
-sig 3 5F6B8B72 2003-03-07 Stefan Bodewig <bodewig@apache.org>
-sig 3 F88341D9 2003-03-17 Lars Eilebrecht <lars@eilebrecht.org>
-sig 3 2261D073 2003-03-17 Astrid Keáler (Kess) <kess@kess-net.de>
-sig 21D0A71B 2003-03-17 Dirk-Willem van Gulik <dirkx@apache.org>
-sig 75A67692 2003-03-18 Erik Abele <erik@codefaktor.de>
-sig B3B2A12C 2003-05-20 ct magazine CERTIFICATE <pgpCA@ct.heise.de>
-sig 3 8103A37E 2003-04-04 Andre Malo <nd@apache.org>
-sub 1024g/24774157 2001-05-28
-sig 5F6B8B72 2001-05-28 Stefan Bodewig <bodewig@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQGiBDsSIk4RBADSCj6rUjV64tYCGT1DYKYR7GthyWpNdGHSYLbETBcDatAe1dzQ
-5NsCgfrlybfyeY+y1lxr3T9bqf6zJWDw/718wff96qmmv1qzexSYtmIrj+h53V82
-EXwWOFuYMJisuxdT940iQzosm3GOv4MJdEg3oI2SgfEyRQQ6vO4Ob5rHDwCg5taZ
-nrHOrXx2dIGHxpxRZ0SUl30D/jmtttFjYOQ3LBMriikz5mh2sK3ZnoSRF4o5O0zW
-Ve6e2SFXOEjVjImKsH6KCbdQNelrAdgiyOoXClyQKsQ27pncbdWo6bO0E3POJZVm
-XaeW7iudHVr63rU5PViXObIQrdQl0D59j5brKj4vdlTyUw8kaHPvbKPDEOwvZq4Y
-LJQ5BACA1YilTeXRJqwFsNlpcxCHwlULD4QUVP496prQWf1B7Z6g0KvLGrQsO0Vn
-Jcn+fEqukysTJixSXCPebosltd4RalJIupVYkp4w6MJ7biaDAlLuNhDcI/AiXTmV
-dXUedVXIaM8I3Ne23gucwbAyc0Hvb+3cSAKRhl/azFQhuHBvlrQjU3RlZmFuIEJv
-ZGV3aWcgPGJvZGV3aWdAYXBhY2hlLm9yZz6IWgQTEQIAGgULBwoDBAMVAwIDFgIB
-AheAAhkBBQI7EiJPAAoJEKIRWuFfa4tyjzgAn3a+nFeNb3mAZQR4lRcXy3F+8eTh
-AJ4iuLt4No6TUB9xNETrm3Y/0TvkU4hGBBARAgAGBQI8PtWPAAoJEIEEZE9RiYUE
-nZIAnjOkQx1BfxN9+E7Yiz4MOxqZjSUpAKDQi0Alv/VR61fmR7KHZ11J2g+HSIiZ
-BBMBAgAGBQI+dd8MAAoJED6Pt/L4g0HZJ2QD5RzYjJ0fi1Gr6NsjmIiU/lvfvPqj
-bNoK2A2flkmLo2lk9jSa1AmF0ETOoCg8hZZHCbxyPZRdsmDJFXrZZWVTdUyZHhHb
-Wx53DR3HavmVEEdDZBSkxfXdSu1CNq31sbdcumtd03FI6SV827cPzl1/RGUiOkEL
-eK0hZb3IvSd5iEYEExECAAYFAj512sEACgkQ7tHqOSJh0HNFuACfb7quMJZHOk5p
-pmTxf4GVS5bh3E4AniLa5788ktdcZCBE5Or+G+yuIGooiD8DBRA+daoa/W+IxiHQ
-pxsRAkQFAKDmlWVuQnWfaGK9z8CP4vESTfiXyQCgpnf1yJWDgqWvUHOAvOeaTPDR
-cOmIRgQQEQIABgUCPnekEAAKCRAVP6DNdaZ2ki/rAJ9Q0x5m4SE3hMNGUoMgS0MN
-mYXDOQCdGa0QW2fZW4B1wSjiUIi6VgY+F7GIRgQQEQIABgUCPsoulgAKCRDb0kX8
-s7KhLBfwAKDV6uwqf9AMBJlr4aE45rWOnlWAeQCgjBYQVHWFjV1cmpT06vE4bMDV
-J6+IRgQTEQIABgUCPo3OLAAKCRDKaTl0gQOjfpFKAJ9TY+mKmq0INLC9iqxbEETj
-NwOn0gCgspeNEqX1SUjt932Lj3IvXR6fkAi0IFN0ZWZhbiBCb2Rld2lnIDxib2Rl
-d2lnQGJvc3QuZGU+iFcEExECABcFAjsSOYEFCwcKAwQDFQMCAxYCAQIXgAAKCRCi
-EVrhX2uLcsm6AKDaA//SYJv2pcXwGBC89OSzGvxy3gCg1kx6qu6zJKaWaE1L9oFq
-Vc65OUSIRgQQEQIABgUCPD7VlQAKCRCBBGRPUYmFBNCzAJ9tv7tNS6NwaOZQ8cR0
-pGslJGKtuQCgpttMmhhRrUwyVuEXc+dKX7rdQMKImQQTAQIABgUCPnXfDwAKCRA+
-j7fy+INB2Vm6A+IDxiYtMvd/mad+7hRoKXvD5AddB1SwnvQdJe0ewStFBYZxZdNO
-LXdkVngCwAJziPGZcQmocEHVMrN+Mxe+3OX0PEZ+3KOOsAUi+fTov2xvf8EWKgX9
-d0li9iEytVA4M0c52a3bPTC0Kki/KAY3m8oNvAmTwWB9dBSooFFDMIhGBBMRAgAG
-BQI+ddrHAAoJEO7R6jkiYdBzruYAnAzvTrvDQNvoAoaDQJ+o/ydqMA8ZAJwNEOQD
-Hsz+6ynbMPoQmKmUqfEISIg/AwUQPnWqIf1viMYh0KcbEQIkpwCeInf4o3C5Ykh/
-xBodVImrp2Cvcy8AoMn3me5p4Sl2rm2tjVxTJZt2sUr7iEYEEBECAAYFAj53pBoA
-CgkQFT+gzXWmdpIpGgCgiTARP6Cf+JKOxUaVFr0L9DC5oUcAoIxF7D5mOVK/AFcp
-1cxNk3BLtdq3iEYEEBECAAYFAj7KLjIACgkQ29JF/LOyoSwAbACglNp7V2Pw4U57
-5IuooM677bZf8pwAn2U2TcHj7PYprU+qYRkyJ3pa7FyyiEYEExECAAYFAj6NzjUA
-CgkQymk5dIEDo35YPwCeJIU/monN96nP4jJjAuflEXMbemUAoJXq7oVCYuOCqWr/
-T3VW0DM3W+dntCpTdGVmYW4gQm9kZXdpZyA8c3RlZmFuLmJvZGV3aWdAZnJlZW5l
-dC5kZT6IXAQTEQIAHAUCPmiBXAIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQohFa
-4V9ri3JPKACfXhFOr4gMMIQwEGvUb6J/X4asuzIAnje2H9T1r/jSVi1NbIEtQfbp
-myQXiJkEEwECAAYFAj513w8ACgkQPo+38viDQdmGkgPnUYJfHlDrQ2jYJWuPDve9
-n4pV9OvyIllKyLdfULjsLWXw4Jm+fMQJgWr2GEov1ZYIyS2+rGDZpbz/vxaBVbgq
-M8TPdiXzxwU8AFq4k+Em4fKXR58ByLSJjvLLza61spNHJennEUFp3tTpEsr4bNuu
-aoRYhtiKzTqNuoC+0x+IRgQTEQIABgUCPnXaxwAKCRDu0eo5ImHQc5lcAJ9FOoAL
-4uHMuqHXrrxsEVPJvEJ2/ACggaOR62EziUqcqpdm/1Zy3P4T22iIPwMFED51qjj9
-b4jGIdCnGxECWssAoKnkR63bWGCFDB5YJtfZJ+nQq3TAAKD1bzG/kITQpIHsT2vC
-Y1yBmlWbBYhGBBARAgAGBQI+d6QaAAoJEBU/oM11pnaS+9IAn0kFlXAzOhhu4r5f
-glMVuw5bTAd0AKCtYRX2ESU/+tsE8vuXWtsMCGeI5YhGBBARAgAGBQI+yi67AAoJ
-ENvSRfyzsqEsSccAoKqG39X2y6xoQa56nviF5iCj/oTFAJwLKx9GyKEUbSM9f/IQ
-7AsZPhHT54hGBBMRAgAGBQI+jc41AAoJEMppOXSBA6N+xYgAn1HbGamcXTDYSFjn
-3U5ik2vQa8nuAKC/uUM01gsdn+71EiAkmrjlH6H9MLkBDQQ7EiJUEAQAzVKWS8Qr
-kysydbTJu2/14wIbz2Coi93aAGelwCwXSxf50JpYdY3Lkcvd0FqT8bcEnz43MCSx
-8vlKubQtUpx9WMGIb4ixtShLJ4lAa6FJldhychz/dnxSNyz5N8W6sby4dTVxac0r
-loxjAOurGanhG7TMtgfDi0cEEoXRyAVoKyMAAwUD/j1pJm4Npq2mlJoE7MK3vAhg
-KwYHFflmJusmqvSAtRuFdT15pbMJrA5bAK+lA3SVOOhhWTCItlphSR2qxJCAcBTe
-OMqUi5ohFcCkSRNvwmDtH+80B3BehlEsEKNk8Z3moa2ch7Oxnb6XEXH5tGJ5Qvx9
-Qid6ZfBaXx7bc8yKyCb4iEYEGBECAAYFAjsSIlQACgkQohFa4V9ri3INMgCgnc22
-kj8TfjktU6u4SUUqud25ZZcAn0B2b0zPjKjGuiwdKSnkFbNcFS3g
-=9dY9
------END PGP PUBLIC KEY BLOCK-----
-
-pub 1024R/697ECEDD 2000-04-06 Henri Gomez <hgomez@slib.fr>
-sig 697ECEDD 2000-04-06 Henri Gomez <hgomez@slib.fr>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQCNAzjsydwAAAEEAMpwFU/ci3/wR3ryCGp9Exr+Rx/hTQ7hWAJcVw8ejlBXlT4T
-yITlRUs0HGfRWxME2J55PuXXsIEPZzjfozNtvOyq8WlLlJ7iaiyWxVRoPJ25sSEj
-C9etm6wjj4E66ZgzuElZkm1m69uEsCHPPNuz1oQ/g1O+SmIVxIYirlxpfs7dAAUR
-tBxIZW5yaSBHb21leiA8aGdvbWV6QHNsaWIuZnI+iQCVAwUQOOzJ3IYirlxpfs7d
-AQFQyQQAj0D9G0hEL7SQGaSCkkoXwvamQw42N8+tNm+jfWHWdE4HAiVlhJmI2GyD
-sdcXVAcR8R7ILIRB5AY7a3bF+qMk0r+vO6oR878RKKn9AvtaAIOnrh6tr0tiPwf5
-XDUMySxIWJEF3SmJAy9Lq3bAl5GMzZCFHiS0NW2gtWgmr/u1RuM=
-=6l+I
------END PGP PUBLIC KEY BLOCK-----
-
-pub 1024R/397DCAD5 2002-07-03 Henri Gomez <hgomez@users.sourceforge.net>
-sig 397DCAD5 2002-07-03 Henri Gomez <hgomez@users.sourceforge.net>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQCNAz0i0UUAAAEEALXePN6IHne0W96YRMnR+4EXB6402QY5f8ZLcnSUZUH55Fb1
-qcZGBc3WRKlPiUvwBD+eVYgCpNSXF/H+oV1mawxNJN5XwqBEpfYmY8MRIPcqa61h
-bJc3LBSm1qNf05G5Cwxeed+OgVm0r1HBy6DAgDHAqNlkC8DZ/BVgqMA5fcrVAAUR
-tCpIZW5yaSBHb21leiA8aGdvbWV6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD6JAJUD
-BRA9ItFFFWCowDl9ytUBASNyA/458T84LUVhqq6Y9fPBAfcFMWY2kehuDWsQEXkO
-46XoK+AnFZCkKuyDLqPHchVUO5pK/gZYsDK/xJkfh3u4FTDTsecb9wFmIeyayVIN
-SI8o6l8EZzDX/PGwqEwzxHrbQkIgIktNn5ApIoazvdBpbkQfNj1vr2wWoMYPLAWM
-8xzecA==
-=UmZ8
------END PGP PUBLIC KEY BLOCK-----
-
-pub 1024D/307A10A5 2002-07-18 Henri Gomez <hgomez@users.sourceforge.net>
-sig 3 307A10A5 2002-07-18 Henri Gomez <hgomez@users.sourceforge.net>
-sub 2048g/862B8F70 2002-07-18
-sig 307A10A5 2002-07-18 Henri Gomez <hgomez@users.sourceforge.net>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQGiBD02vbERBAC1v8fR6gjERpaz4UMfdy0hRVWCPSbOdF+Swm/IenjVzErco6zb
-MTa13umUNrDPBy/tTWiCCZrOnqi7fgDzWqPEqrXJjKAFVLEWE6MmKylPPEPG1/bm
-idkNGERSAZduvhKv777PzvEJJ/8eGe3wy/O8NbgIjCPtr4UklwCZS8cFuwCg8oMO
-UdT8qZRtzdxdAyu1m5fUb+MD/3IKJYWXsdtb6iBphCU4f/BoyjVC9EZJ1ywLuiVM
-siKbuaDUaXU9nWcbNKv+fx8uZ1NaadpfLokqqhnWcpnSiqw8HNR7SwsF1D33rkXK
-O4FSuVss/tIoqGdWFcJyPkP4yP5shxqR335narVw2vDa0+BiWkALbA2qVsSIdZDB
-LeFZA/47AMBS0U2BRk2rQT8LmMuFl7mR+wNBM4n7FUGdxsGn3TcYd4pXTNrEQPrV
-YNdooKlikgGk4hgFnIFX09Spmimqgq0goFue81rttVdZZ4uep8dTghY6gwmvcOxX
-jATbhWStBhdu9B35kzfHc+1QihD5Z94u4uyWIVBIzikcdiY8LbQqSGVucmkgR29t
-ZXogPGhnb21lekB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+iFcEExECABcFAj02vbEF
-CwcKAwQDFQMCAxYCAQIXgAAKCRAZMdaEMHoQpYijAKCCP68ndU/kTXR9XAKLvibC
-3S8+1QCfUFQYte3Jo+MHKaWjsu9JGptRzo+5Ag0EPTa93RAIAKlsRJ5gOGTFsmaR
-W9k6MIh4c/MCy7J7HUxT5xTdHROa+3zUh+FAE/JaOx9ZtZtH863DFHA8cP4L+tpi
-PjBT6g2E94dwGcuH/OiSSCT4JSBukbGbOuLLdmFXqUl8+4gsL90Xal67FtNLwyLG
-1n7geLir0byD+OT7VLA5w+6G0NOpJEveV/FIa2qLgdRZ8vz73ybgMh18hBUrUmro
-jncp0rln2VU7VCH1C2aClKm7kK4mGAjIFIzKbguK+kM3b8NDHmXKpT6syyCtIM3h
-prkV1TUCAFqLI32aSdlTN79lpeA2zDga9k4/4X/RDHsFpRN2neRFGTNUtuUgYpQQ
-E5zWBmMAAwUH/RiGxyeBsad923IwE1+GAjxFl2tqF9xWk0J6yTnSK4nfhYAE9evV
-jwDEok9jRl4ILCcXx6YN/d/lWNuSbARKHz/3hLiTouPpwd3SSJ8is2x9PgpJz5JX
-cD0y1SkbPLvs3jH3ZmdcxZpuAmJeI/typqFKK5pWP44oXIH+XH/8nWDtmLEBkgKQ
-/ATQWenMTmZ6MIJ6aWKWGkO9QS6iYRz3PPPGQ1O8W02CeprM2wBtlb8J1Z3RxNhM
-rZcg/1Qi3V3D1HI4zw6tAFmDeBb8J4PaBQzqlhzx2EBTbfwNPhV8AlPvpxHEeGGn
-v+O1yhZr33SnyZdINNoNDn+owVMdmkobe9GIRgQYEQIABgUCPTa93QAKCRAZMdaE
-MHoQpRsTAJ4qst3MhLm48fBAEnzuzi/BIKr+AgCfYaCB/AvPoncQbHc8BcNGRimR
-P9A=
-=hQhz
------END PGP PUBLIC KEY BLOCK-----
-
-pub 1024D/EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
-sig 3 EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
-sig 3 5F6B8B72 2003-03-07 Stefan Bodewig <bodewig@apache.org>
-sub 1024g/B5FFC53F 2002-04-10
-sig EDF62C35 2002-04-10 Magesh Umasankar <umagesh@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.0 (GNU/Linux)
-
-mQGiBDy0ebgRBADuKIKD8PuJ4wKEV1h2AprwJjxCRx8vn48XNwfLZuvhw8cpArtK
-rZwhoGPPUPEEXgtTNerlKq4VwpAwcnvRz7oC/7aWkUbcR2sAyhfe2scohwPgw7Xv
-+isWC0NDPdrxvXG/PUOG/cnELunr51ymybBqBxUd2gMhYIxPo67D+YPYLwCgwcZp
-yc/6kJa116ESWHrti342GD8D/1srpnRs9CiS1DQF1uZ1wW4vzj4VD61tKsjdWD8D
-V573R22iMDLSj4oMB536WxUH7snz8XsAKm/peqJ6G9m0smtmWA1ago5yzQj70WqF
-xzWBhHn2I/YfAQ8pb2s9q1lClj8elnCxT65L27ydBAZteejb2VqjtQ6iGy86PUT2
-wRUvBADZmoV1eIZJEM5NnxBv1EtvRYZtIQEzZ8dO2A1LOS7qlVr8IypljNPLGhzX
-VHNvVsjC9QMUSWeBsDedvQHQ3hJpIMnTI32XE1V4gX06gfVTZdhf2fLTtwnsHZp0
-oumqshGDVRhNJJdDYLikxWOxOfkNveKEqJFvtuBR+ZqqluQKebQlTWFnZXNoIFVt
-YXNhbmthciA8dW1hZ2VzaEBhcGFjaGUub3JnPohXBBMRAgAXBQI8tHm4BQsHCgME
-AxUDAgMWAgECF4AACgkQ76Pnee32LDWSRwCfeASWXvpdt7bSFPMtszU/7uPEktsA
-n23mYUN5WKJA1ZreW+0CcZ2ESnOviEYEExECAAYFAj5ogYgACgkQohFa4V9ri3IW
-YACgsxGig0PL0M86rJsA/IpXjBdg3ysAoJzsoUZ/7s2BxDfzF/FRTVIzS+TMuQEN
-BDy0eb8QBACBVb9YDJRp9Irzmq71Jf9FIPw+4g/cWpF3t/Eb7eSzMcOvTAXyNIWz
-aaOjHre7lFctHfq8ls/6gR7uqajiAnfQcfTcu7pp+F5KsU0Embt83SFzZ3aoJwET
-mB/LqUyrrGDiue3lU+flJO7UmcsRvtk0+BDkyCeB9HgfdpXbBLCyuwADBQP+PNxX
-4e1tg3ZJo/xNEnD2Re3HjmQRrr0RYJLUGjgQrAEONSgowx3IW8/JssmNJVjnYm0q
-jSKsb8rergCFJhPNZ8Dd/k00pKcrq+IN6j7WTYLqPce87zrGAZUtmDwDSp5mxy5E
-xWJJxsgBPk4YBQLzJt21A3BgK/i24Sze2VLbaZuIRgQYEQIABgUCPLR5vwAKCRDv
-o+d57fYsNa8xAJ4mLfonZbd64+YY9rfvhIh3Vsl3AACeLPPKtma2K6XCfhTBEDnj
-hzSr4vo=
-=lBfF
------END PGP PUBLIC KEY BLOCK-----
-pub 1024D/265B4C63 2003-08-18 Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
-sig 3 265B4C63 2003-12-06 Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
-sig 3 5F6B8B72 2003-12-12 Stefan Bodewig <bodewig@apache.org>
-uid Antoine Levy-Lambert (Apache Ant Committer) <antoine@antbuild.com>
-sig 3 265B4C63 2003-08-18 Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
-sig 3 5F6B8B72 2003-12-12 Stefan Bodewig <bodewig@apache.org>
-sub 1024g/A3060393 2003-08-18
-sig 265B4C63 2003-08-18 Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.2 (MingW32)
-
-mQGiBD9AzmcRBACMqgb7IFvC/nLxw7mUAgHENeZXY3JOQJ8wVBevIbbMEeFvzHE2
-diFydqUXocPexduYr0ahkf033WvWdAiNqDLfVW/HFOsc1TpjbHkqPUHtJ62Ya5tg
-nH4UGN9BYZfMbfVDOSz41lYwmfK5HYgpZN/sBQBSKf2qgoFB+LxYaae8YwCgrWlu
-fYhf7fkKbbdSf3BGS67ggNkD/0VvkXkw1SEnPaqrkKGkPKomCTb2auGxcYYI3/rP
-1m+SGRf0gE1NtocmIEitiR6WvfKUjoMAXSCp5KdnUXmO9rwzkM002KCA7K5CY+e/
-2bLDuiQ3rNiD4mFfG6M+UnmZ+GMFba1p9Cp4PqLNLsCHz67t7hEsscTZQ8mZ9xKM
-+GCsA/9P+XFM7JDn9MLhYab9qo1CkceBkthUP6jWGjuAZ00elmBCkpkzNv5aIzss
-xih2GpaU/tmcMjw8FGp0dTwzqdpmbZBLjunRnuBTir4m4l5G9rwl4JbfK1PVqk4a
-VKkh9W7/yqBcEfNcsfJO9cqaQ+PzcnCoDiD9UHEBYzUhrCKwhLRCQW50b2luZSBM
-ZXZ5LUxhbWJlcnQgKEFwYWNoZSBBbnQgQ29tbWl0dGVyKSA8YW50b2luZUBhbnRi
-dWlsZC5jb20+iFsEExECABsFAj9AzmcGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ
-hhTWqyZbTGMnOgCeJV2gI+1CIxMR7dcIhXjPkiusreIAn2SGOsPS0o89l0EIVuc9
-J2F03aB+iEYEExECAAYFAj/ZwioACgkQohFa4V9ri3J8CACgiGlh+td0BAnJPq19
-ovEQR2DJ02MAoLP203EF+BLPpykeTcGp8UEWmeGQtEBBbnRvaW5lIExldnktTGFt
-YmVydCAoQXBhY2hlIEFudCBDb21taXR0ZXIpIDxhbnRvaW5lQGFwYWNoZS5vcmc+
-iF4EExECAB4FAj/SSwYCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQhhTWqyZb
-TGOh/QCfbrSoipMlizyGT6c8BOPEd9zzfi0AnRRTqTDzXzsGk4CG/BJME9CCm7Ts
-iEYEExECAAYFAj/ZwiMACgkQohFa4V9ri3IOVACgh2QHS1+cVjvM4eLjls1bJwWi
-o5IAoLtAszHrwHS5qrhvr2rtnlyyyV2guQENBD9AzmkQBACNpBfqi2PweozCtxoX
-PqzKdRDKqCw7TOrDR6lbP3z/ov/1SN5Vc0XqNzBSGqwBcmGWtneABkX7n4uzJrC5
-wvX/TZ/DkMvypPyeNVMu+/ZMlzdbx06OUDKr6Fy/NtaI7cN1rw+Igyv22Q8ilhhg
-s/5Rdj84EtJkWQjVRml6wXSAZwADBwP/TqyhOC4sA5YrePYGH8i46h0SU9dXjfEF
-JijC8vXZ+BNQHQVK3fjEXedZL8Zvvp1bsMu7Muz9SMnqygM1unp2NGxLRd/9315p
-Qh0VStYKn0xq13ybOKr0Gsyx5yyl3Nzlu/1qAR0es/zN4jV7/IQi3R2GOvezcpHX
-mkbsYiZAhu2IRgQYEQIABgUCP0DOaQAKCRCGFNarJltMYxcsAKCSJJUABlXYnLBj
-b+WtmAzu0JjZNACdFJ4KIATJDK/5ajFq5+irOpodoHc=
-=UomR
------END PGP PUBLIC KEY BLOCK-----
+++ /dev/null
-/*
- * Apache License
- * Version 2.0, January 2004
- * http://www.apache.org/licenses/
- *
- * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- *
- * 1. Definitions.
- *
- * "License" shall mean the terms and conditions for use, reproduction,
- * and distribution as defined by Sections 1 through 9 of this document.
- *
- * "Licensor" shall mean the copyright owner or entity authorized by
- * the copyright owner that is granting the License.
- *
- * "Legal Entity" shall mean the union of the acting entity and all
- * other entities that control, are controlled by, or are under common
- * control with that entity. For the purposes of this definition,
- * "control" means (i) the power, direct or indirect, to cause the
- * direction or management of such entity, whether by contract or
- * otherwise, or (ii) ownership of fifty percent (50%) or more of the
- * outstanding shares, or (iii) beneficial ownership of such entity.
- *
- * "You" (or "Your") shall mean an individual or Legal Entity
- * exercising permissions granted by this License.
- *
- * "Source" form shall mean the preferred form for making modifications,
- * including but not limited to software source code, documentation
- * source, and configuration files.
- *
- * "Object" form shall mean any form resulting from mechanical
- * transformation or translation of a Source form, including but
- * not limited to compiled object code, generated documentation,
- * and conversions to other media types.
- *
- * "Work" shall mean the work of authorship, whether in Source or
- * Object form, made available under the License, as indicated by a
- * copyright notice that is included in or attached to the work
- * (an example is provided in the Appendix below).
- *
- * "Derivative Works" shall mean any work, whether in Source or Object
- * form, that is based on (or derived from) the Work and for which the
- * editorial revisions, annotations, elaborations, or other modifications
- * represent, as a whole, an original work of authorship. For the purposes
- * of this License, Derivative Works shall not include works that remain
- * separable from, or merely link (or bind by name) to the interfaces of,
- * the Work and Derivative Works thereof.
- *
- * "Contribution" shall mean any work of authorship, including
- * the original version of the Work and any modifications or additions
- * to that Work or Derivative Works thereof, that is intentionally
- * submitted to Licensor for inclusion in the Work by the copyright owner
- * or by an individual or Legal Entity authorized to submit on behalf of
- * the copyright owner. For the purposes of this definition, "submitted"
- * means any form of electronic, verbal, or written communication sent
- * to the Licensor or its representatives, including but not limited to
- * communication on electronic mailing lists, source code control systems,
- * and issue tracking systems that are managed by, or on behalf of, the
- * Licensor for the purpose of discussing and improving the Work, but
- * excluding communication that is conspicuously marked or otherwise
- * designated in writing by the copyright owner as "Not a Contribution."
- *
- * "Contributor" shall mean Licensor and any individual or Legal Entity
- * on behalf of whom a Contribution has been received by Licensor and
- * subsequently incorporated within the Work.
- *
- * 2. Grant of Copyright License. Subject to the terms and conditions of
- * this License, each Contributor hereby grants to You a perpetual,
- * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- * copyright license to reproduce, prepare Derivative Works of,
- * publicly display, publicly perform, sublicense, and distribute the
- * Work and such Derivative Works in Source or Object form.
- *
- * 3. Grant of Patent License. Subject to the terms and conditions of
- * this License, each Contributor hereby grants to You a perpetual,
- * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- * (except as stated in this section) patent license to make, have made,
- * use, offer to sell, sell, import, and otherwise transfer the Work,
- * where such license applies only to those patent claims licensable
- * by such Contributor that are necessarily infringed by their
- * Contribution(s) alone or by combination of their Contribution(s)
- * with the Work to which such Contribution(s) was submitted. If You
- * institute patent litigation against any entity (including a
- * cross-claim or counterclaim in a lawsuit) alleging that the Work
- * or a Contribution incorporated within the Work constitutes direct
- * or contributory patent infringement, then any patent licenses
- * granted to You under this License for that Work shall terminate
- * as of the date such litigation is filed.
- *
- * 4. Redistribution. You may reproduce and distribute copies of the
- * Work or Derivative Works thereof in any medium, with or without
- * modifications, and in Source or Object form, provided that You
- * meet the following conditions:
- *
- * (a) You must give any other recipients of the Work or
- * Derivative Works a copy of this License; and
- *
- * (b) You must cause any modified files to carry prominent notices
- * stating that You changed the files; and
- *
- * (c) You must retain, in the Source form of any Derivative Works
- * that You distribute, all copyright, patent, trademark, and
- * attribution notices from the Source form of the Work,
- * excluding those notices that do not pertain to any part of
- * the Derivative Works; and
- *
- * (d) If the Work includes a "NOTICE" text file as part of its
- * distribution, then any Derivative Works that You distribute must
- * include a readable copy of the attribution notices contained
- * within such NOTICE file, excluding those notices that do not
- * pertain to any part of the Derivative Works, in at least one
- * of the following places: within a NOTICE text file distributed
- * as part of the Derivative Works; within the Source form or
- * documentation, if provided along with the Derivative Works; or,
- * within a display generated by the Derivative Works, if and
- * wherever such third-party notices normally appear. The contents
- * of the NOTICE file are for informational purposes only and
- * do not modify the License. You may add Your own attribution
- * notices within Derivative Works that You distribute, alongside
- * or as an addendum to the NOTICE text from the Work, provided
- * that such additional attribution notices cannot be construed
- * as modifying the License.
- *
- * You may add Your own copyright statement to Your modifications and
- * may provide additional or different license terms and conditions
- * for use, reproduction, or distribution of Your modifications, or
- * for any such Derivative Works as a whole, provided Your use,
- * reproduction, and distribution of the Work otherwise complies with
- * the conditions stated in this License.
- *
- * 5. Submission of Contributions. Unless You explicitly state otherwise,
- * any Contribution intentionally submitted for inclusion in the Work
- * by You to the Licensor shall be under the terms and conditions of
- * this License, without any additional terms or conditions.
- * Notwithstanding the above, nothing herein shall supersede or modify
- * the terms of any separate license agreement you may have executed
- * with Licensor regarding such Contributions.
- *
- * 6. Trademarks. This License does not grant permission to use the trade
- * names, trademarks, service marks, or product names of the Licensor,
- * except as required for reasonable and customary use in describing the
- * origin of the Work and reproducing the content of the NOTICE file.
- *
- * 7. Disclaimer of Warranty. Unless required by applicable law or
- * agreed to in writing, Licensor provides the Work (and each
- * Contributor provides its Contributions) on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied, including, without limitation, any warranties or conditions
- * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- * PARTICULAR PURPOSE. You are solely responsible for determining the
- * appropriateness of using or redistributing the Work and assume any
- * risks associated with Your exercise of permissions under this License.
- *
- * 8. Limitation of Liability. In no event and under no legal theory,
- * whether in tort (including negligence), contract, or otherwise,
- * unless required by applicable law (such as deliberate and grossly
- * negligent acts) or agreed to in writing, shall any Contributor be
- * liable to You for damages, including any direct, indirect, special,
- * incidental, or consequential damages of any character arising as a
- * result of this License or out of the use or inability to use the
- * Work (including but not limited to damages for loss of goodwill,
- * work stoppage, computer failure or malfunction, or any and all
- * other commercial damages or losses), even if such Contributor
- * has been advised of the possibility of such damages.
- *
- * 9. Accepting Warranty or Additional Liability. While redistributing
- * the Work or Derivative Works thereof, You may choose to offer,
- * and charge a fee for, acceptance of support, warranty, indemnity,
- * or other liability obligations and/or rights consistent with this
- * License. However, in accepting such obligations, You may act only
- * on Your own behalf and on Your sole responsibility, not on behalf
- * of any other Contributor, and only if You agree to indemnify,
- * defend, and hold each Contributor harmless for any liability
- * incurred by, or claims asserted against, such Contributor by reason
- * of your accepting any such warranty or additional liability.
- *
- * END OF TERMS AND CONDITIONS
- *
- * APPENDIX: How to apply the Apache License to your work.
- *
- * To apply the Apache License to your work, attach the following
- * boilerplate notice, with the fields enclosed by brackets "[]"
- * replaced with your own identifying information. (Don't include
- * the brackets!) The text should be enclosed in the appropriate
- * comment syntax for the file format. We also recommend that a
- * file or class name and description of purpose be included on the
- * same "printed page" as the copyright notice for easier
- * identification within third-party archives.
- *
- * Copyright [yyyy] [name of copyright owner]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+++ /dev/null
-This license came from:
-http://www.w3.org/Consortium/Legal/copyright-software-19980720
-
-
-W3C® SOFTWARE NOTICE AND LICENSE
-Copyright © 1994-2001 World
-Wide Web Consortium, <a href="http://www.w3.org/">World
-Wide Web Consortium</a>, (<a href=
-"http://www.lcs.mit.edu/">Massachusetts Institute of
-Technology</a>, <a href="http://www.inria.fr/">Institut National de
-Recherche en Informatique et en Automatique</a>, <a href=
-"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
-http://www.w3.org/Consortium/Legal/
-
-This W3C work (including software, documents, or other related
-items) is being provided by the copyright holders under the
-following license. By obtaining, using and/or copying this work,
-you (the licensee) agree that you have read, understood, and will
-comply with the following terms and conditions:
-Permission to use, copy, modify, and distribute this software
-and its documentation, with or without modification, for any
-purpose and without fee or royalty is hereby granted, provided that
-you include the following on ALL copies of the software and
-documentation or portions thereof, including modifications, that
-you make:
-
-The full text of this NOTICE in a location viewable to users of
-the redistributed or derivative work.
-
-Any pre-existing intellectual property disclaimers, notices, or
-terms and conditions. If none exist, a short notice of the
-following form (hypertext is preferred, text is permitted) should
-be used within the body of any redistributed or derivative code:
-"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
-Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
-http://www.w3.org/Consortium/Legal/"
-
-Notice of any changes or modifications to the W3C files,
-including the date changes were made. (We recommend you provide
-URIs to the location from which the code is derived.)
-
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
-COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
-MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
-USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
-PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
-SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
-SOFTWARE OR DOCUMENTATION.
-
-The name and trademarks of copyright holders may NOT be used in
-advertising or publicity pertaining to the software without
-specific, written prior permission. Title to copyright in this
-software and any associated documentation will at all times remain
-with copyright holders.
-____________________________________
-This formulation of W3C's notice and license became active on
-August 14 1998 so as to improve compatibility with GPL. This
-version ensures that W3C software licensing terms are no more
-restrictive than GPL and consequently W3C software may be
-distributed in GPL packages. See the older formulation for the
-policy prior to this date. Please see our Copyright FAQ for common
-questions about using materials from
-our site, including specific terms and conditions for packages like
-libwww, Amaya, and Jigsaw.
-Other questions about this notice can be
-directed to site-policy@w3.org.
-
-webmaster
+++ /dev/null
-This license came from: http://www.megginson.com/SAX/copying.html
- However please note future versions of SAX may be covered
- under http://saxproject.org/?selected=pd
-
-
-This page is now out of date -- see the new SAX site at
-http://www.saxproject.org/ for more up-to-date
-releases and other information. Please change your bookmarks.
-
-
-SAX2 is Free!
-
-I hereby abandon any property rights to SAX 2.0 (the Simple API for
-XML), and release all of the SAX 2.0 source code, compiled code, and
-documentation contained in this distribution into the Public Domain.
-SAX comes with NO WARRANTY or guarantee of fitness for any
-purpose.
-
-David Megginson, david@megginson.com
-2000-05-05
\ No newline at end of file
+++ /dev/null
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xerces" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, International
- * Business Machines, Inc., http://www.ibm.com. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
+++ /dev/null
- =========================================================================
- == NOTICE file corresponding to the section 4 d of ==
- == the Apache License, Version 2.0, ==
- == in this case for the Apache Ant distribution. ==
- =========================================================================
-
- This product includes software developed by
- The Apache Software Foundation (http://www.apache.org/).
-
- This product includes also software developed by :
- - the W3C consortium (http://www.w3c.org) ,
- - the SAX project (http://www.saxproject.org)
-
- Please read the different LICENSE files present in the root directory of
- this distribution.
+++ /dev/null
-
- A N T
-
-
- What is it?
- -----------
-
- Ant is a Java based build tool. In theory it is kind of like "make"
- without makes wrinkles and with the full portability of pure java code.
-
-
- Why?
- ----
-
- Why another build tool when there is already make, gnumake, nmake, jam,
- and others? Because all of those tools have limitations that its original
- author couldn't live with when developing software across multiple platforms.
-
- Make-like tools are inherently shell based. They evaluate a set of
- dependencies and then execute commands not unlike what you would issue on a
- shell. This means that you can easily extend these tools by using or writing
- any program for the OS that you are working on. However, this also means that
- you limit yourself to the OS, or at least the OS type such as Unix, that you
- are working on.
-
- Makefiles are inherently evil as well. Anybody who has worked on them for any
- time has run into the dreaded tab problem. "Is my command not executing
- because I have a space in front of my tab!!!" said the original author of Ant
- way too many times. Tools like Jam took care of this to a great degree, but
- still use yet another format to use and remember.
-
- Ant is different. Instead a model where it is extended with shell based
- commands, it is extended using Java classes. Instead of writing shell
- commands, the configuration files are XML based calling out a target tree
- where various tasks get executed. Each task is run by an object which
- implements a particular Task interface.
-
- Granted, this removes some of the expressive power that is inherent by being
- able to construct a shell command such as `find . -name foo -exec rm {}` but
- it gives you the ability to be cross platform. To work anywhere and
- everywhere. And hey, if you really need to execute a shell command, Ant has
- an exec rule that allows different commands to be executed based on the OS
- that it is executing on.
-
- The Latest Version
- ------------------
-
- Details of the latest version can be found on the Apache Ant
- Project web site <http://ant.apache.org/>.
-
-
- Documentation
- -------------
-
- Documentation is available in HTML format, in the docs/ directory.
- For information about building and installing Ant, see
- docs/manual/index.html
-
-
- Licensing
- ---------
-
- This software is licensed under the terms you may find in the file
- named "LICENSE" in this directory.
-
-
- Thanks for using Ant.
-
- The Apache Ant Project
- <http://ant.apache.org/>
+++ /dev/null
-Things that are scheduled for Ant 1.6.2. Once this list is empty, we
-can roll the first beta.
-
-Please go ahead and assign things that are not already assigned to
-anybody else (assignments look like [Stefan]) to yourself - and please
-remove items from this list once they are complete.
-
-
-
+++ /dev/null
-Changes from Ant 1.6.2 to Ant 1.6.3
-===================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* The subant task used the canonical version of a file path. This
- has been changed to use the absolute path. Bugzilla 30438.
-
-* Tar now writes two EOF blocks rather than one.
- Bugzilla report 28776
-
-* The Reference object now has a project field which it uses in preference
- to the project passed in. This allows composite references to be
- handled to nested projects.
- Bugzilla report 25777
-
-* <junit> with filtertrace="true" will now also swallow lines for the
- sun.reflect package. If you need to see them in your stack trace,
- you must set filtertrace to false.
- Bugzilla Report 22758
-
-* The jikes compiler adapter now supports -bootclasspath, -extdirs and
- -sourcepath and also uses the same logic for debug flags as javac.
- This means, the jikes compiler adapter now requires Jikes 1.15 or later.
- Bugzilla Reports 25868, 26404 and 32609.
-
-* Targets with identical name work in imported project. Bugzilla Report 34566.
-
-* The gcj compiler adapter used to include the Java runtime classes
- even if includeJavaRuntime was set to false, unless the
- bootclasspath has been specified as well. It will now always adhere
- to includeJavaRuntime, you may need to set it to true explicitly now
- if you relied on the old behavior.
-
-Other changes:
---------------
-
-* <javadoc> can now take an attribute 'executable'. Bugzilla report 30606.
-
-* New attribute ignorecontents for <different> selector
-
-* Javadoc fixes for Location, Project, and RuntimeConfigurable
- Bugzilla 30160.
-
-* Enable to choose the regexp implementation without system property.
- Bugzilla Report 15390.
-
-* Expose objects and methods in IntrospectionHelper. Bugzilla Report 30794.
-
-* Allow file attribute of <move> to rename a directory.
- Bugzilla Report 22863.
-
-* Add xmlcatalog nested element to XmlProperty. Bugzilla report 27053.
-
-* New attribute alwayslog for <redirector> type.
-
-* Added <target> nested elements to <ant> and <antcall> to allow
- specification of multiple sub-build targets, which are executed
- with a single dependency analysis.
-
-* Refactored Target invocation into org.apache.tools.ant.Executor
- implementations. Bugzilla Reports 21421, 29248.
-
-* <rmic> now also supports Kaffe's rmic version shipping with Kaffe
- 1.1.2 and above.
-
-* added casesensitive attribute to <globmapper> and <regexpmapper>
- Bugzilla report 16686
-
-* added handledirsep attribute to <globmapper> and <regexpmapper>
- Bugzilla report 32487
-
-* added a new mapper <filtermapper>
-
-* When a BuildListener tried to access System.err or System.out, Ant
- would have thrown an exception - this has been changed. Ant now
- silently ignores the message. BuildListeners still should avoid
- accessing either stream.
-
-* Added a comment attribute to the zip task.
- Bugzilla report 22793.
-
-* Overloaded FileUtils.createNewFile with a boolean mkdirs attribute
- to create nonexistent parent directories.
-
-* <apply> has a new "force" attribute that, when true, disables
- checking of target files.
-
-* Made the dest attribute of the apply task optional; mapped target
- filenames will be interpreted as absolute pathnames when dest is omitted.
-
-* Changed default tempdir for <javac> from user.dir to java.io.tmpdir.
-
-* Added searchpath attribute to <exec> for searching path variable(s)
- when resolveexecutable = true.
-
-* Added revision and userid attributes to <pvcs> documentation.
-
-* Added support to the touch task for a mkdirs attribute to create
- nonexistent parent directories before touching new files.
-
-* Added support to the touch task for a pattern attribute to allow
- alternate datetime formats.
-
-* Added support to the touch task to map touched files using a nested
- mapper element.
-
-* Added support to the touch task for a verbose attribute to suppress
- logging of new file creation.
-
-* bad link in docs to the enhancement page in bugzilla.
- Bugzilla report 33252.
-
-* Added length task to get strings' and files' lengths.
-
-* <native2ascii> and <javah> now also support Kaffe's versions.
-
-* Recursive token expansion in a filterset can now be disabled by
- setting its recurse attribute to false.
-
-* Pathconvert no longer requires that one of (targetos|pathsep|dirsep)
- be set; platform defaults are used when this is the case.
-
-* Added preservelastmodified attribute to fixcrlf task. Bugzilla 25770.
-
-* Added isfileselected condition.
-
-* Added verbose="true|false" attribute to <subant>. When verbose is enabled,
- the directory name is logged on entry and exit of the sub-build. Bugzilla 33787.
-
-* Added -nouserlib option to allow running ant without automatically loading
- up ${user.home}/.lib/ant. This is useful when compiling ant, and antlibs.
- Modified the build.sh and build.bat to use the option.
-
-* Added -noclasspath option to allow running ant WITHOUT using CLASSPATH env
- variable. Modified ant.bat to do this so that %CLASSPATH% is not looked at.
-
-* Add else attribute to the condition task, which specifies an
- optional alternate value to set the property to if the nested
- condition evaluates to false. Bugzilla report 33074.
-
-* Ant generated jar files should now be detected as jar files by
- Solaris. Bugzilla Report 32649.
-
-* Added two tutorials
- - beginner: introduction into Ant
- - task developers: using path, fileset etc
-
-* <rpm> has new attributes failonerror and quiet.
-
-Fixed bugs:
------------
-
-* Do not pass on ThreadDeath when halting <java fork="false">. Bugzilla
- 32941.
-
-* Killing a thread running <java fork="true"> (e.g. from an IDE) would
- not stop the forked process. Bugzilla 31928.
-
-* Programs run with <java fork="true"> can now accept standard input
- from the Ant console. (Programs run with <java fork="false"> could
- already do so.) Bugzilla 24918.
-
-* AbstractCvsTask prematurely closed its outputStream and errorStream.
- Bugzilla 30097.
-
-* Impossible to use implicit classpath for <taskdef>
- when Ant core loader != Java application loader and
- Path.systemClassPath taken from ${java.class.path} Bugzilla 30161.
-
-* MacroInstance did not clean up nested elements correctly in the execute
- method, causing multiple use of the same macro instance with nested
- elements to fail.
-
-* checksum fileext property doc wrong. Bugzilla 30787.
-
-* FTP task, getTimeDiff method was returning wrong value. Bugzilla 30595.
-
-* Zip task was not zipping when only empty directories were found.
- Bugzilla 30365.
-
-* Jar task was not including manifest files when duplicate="preserve" was
- chosen. Bugzilla 32802.
-
-* Classpath was treated in the same way as -lib options. Bugzilla 28046.
-
-* Manual page for cvsversion contained incorrect attributes and did not
- say since 1.6.1. Bugzilla 31408.
-
-* Typo in definition of <cvsversion> task causing it not to be defined.
- Bugzilla 31403.
-
-* Execution of top level tasks in imported files get delayed by targets.
- Bugzilla report 31487.
-
-* ExecTask executes checkConfiguration() even though os does not match.
- Bugzilla report 31805.
-
-* Concat task instance could not be run twice.
- Bugzilla report 31814.
-
-* NPE using XmlLogger and antlib.
- Bugzilla report 31840.
-
-* Properties.propertyNames() should be used instead of .keys().
- Bugzilla report 27261.
-
-* Target location is not set for default target.
- Bugzilla report 32267.
-
-* Incorrect classloader parent in junittask when using with
- ant-junit.jar and junit.jar not in the project classloader. Bugzilla
- report 28474.
-
-* getResources() on the classloader returned by ClasspathUtils would
- see each resource twice - if the resource is in the project
- classpath and if the classloader is requested with a null path.
-
-* XMLValidate used URL#getFile rather than the ant method FileUtils#fromURI
- Bugzilla report 32508
-
-* fixed Regexp-Mapper docs which gave outdated instructions (optional.jar)
- Bugzilla report 28584
-
-* <scp> using <fileset> didn't work with OpenSSH 3.9 and later.
- Bugzilla report 31939
-
-* <setproxy> failed to set user/password on some JDKs.
- Bugzilla report 32667
-
-* untar would go into infinite loop for some invalid tar files.
- Bugzilla report 29877
-
-* forked <javac> won't pass -source to a JDK 1.1 or 1.2 javac anymore.
- Bugzilla report 32948
-
-* propertyset references did not handle nested propertyset references.
-
-* oata.types.Description.getDescription(Project) would throw a
- NullPointerException when the "ant.targets" reference was unset.
-
-* Wrapper scripts did not detect WINNT value of dynamic OS environment
- variable when logged into workstations using Novell authentication.
- Bugzilla Report 30366.
-
-* DependScanner.getResource() always returned nonexistent resources,
- even when the resource actually existed. Bugzilla Report 30558.
-
-* <apply> was broken with classfilesets. Bugzilla Report 30567.
-
-* <available> returned false positives when checking a file
- passed in with the current basedir leading twice:
- e.g. ${basedir}${file.separator}${basedir}${file.separator}foo .
-
-* The first file open that took place when using input files with the
- <exec>, <apply>, or <java> tasks was always logged to System.out
- instead of to the managing Task.
-
-* <telnet> and <rexec> would try to disconnect from servers they never
- connetced to, potentially leading to exceptions in commons-net.
- Bugzilla Report 33618.
-
-* <zip> would drop files matched by defaultexcludes during updates.
- Bugzilla Report 33412.
-
-* <zip> couldn't store files with size between 2GB and 4GB (the
- upper limit set by the ZIP format itself). Bugzilla Report 33310.
-
-* NPE when when <presetdef> tries to configure a task that
- cannot be instantiated. Bugzilla Report 33689.
-
-* <javac debug="false"> created an invalid command line when running
- the Symantec Java compiler.
-
-* Get with usetimestamp did not work on Java 1.2.
-
-* Get with usetimestamp did not work when local timestamp roughly >= now.
-
-* The framed JUnit report now handles multiple reports for the same
- testcase properly. Bugzilla Report 32745.
-
-* <cab> didn't work for files with spaces in their names on Windows.
- Bugzilla Report 17182.
-
-* The VAJ tasks could fail if the project name contained characters
- that need to get URL encoded. Bugzilla Report 23322.
-
-* The FTP task could crash with an ArrayIndexOutOfBoundsException
- Bugzilla Report 28797
-
-* Improved handling of paths on cygwin
- Bugzilla Report 31245
-
-* TarInputStream#read() wasn't implemented correctly. Bugzilla Report
- 34097.
-
-* <xslt> failed to process file-hierarchies of more than one level if
- scanincludeddirectories was true. Bugzilla Report 24866.
-
-* forkmode="perBatch" or "once" would ignore extension attributes that
- had been specified for <formatter>s. Bugzilla Report 32973.
-
-* minor performance update of Locator.fromUri. Bugzilla Report 34529.
-
-* The refid attribute of the I/O redirector was not functional.
-
-* SQL task would try access result sets of statements that didn't
- return any, causing problems with Informix IDS 9.2 and IBM DB2 8.1
- FixPak 6 (or later). Bugzilla Reports 27162 and 29954.
-
-* make sure that Zip and its derivates call the createEmptyZip method when
- there are no resources to zip/jar/...
-
-* ant.bat was missing runAntNoClasspath label for goto.
- Bugzilla 34510.
-
-
-Changes from Ant 1.6.1 to Ant 1.6.2
-===================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* The import task used the canonical version of a file path. This
- has been changed to use the absolute path. Bugzilla 28505.
-
-* ant-xalan2.jar has been removed since the only class contained in it
- didn't depend on Xalan-J 2 at all. Its sole dependency has always
- been TraX and so it has been merged into ant-trax.jar.
-
-* All exceptions thrown by tasks are now wrapped in a buildexception
- giving the location in the buildfile of the task.
-
-* Nested elements for namespaced tasks and types may belong to the
- Ant default namespace as well as the task's or type's namespace.
-
-* <junitreport> will very likely no longer work with Xalan-J 1.
-
- Note that Xalan-J 1 has been deprecated for a very long time and we
- highly recommend that you upgrade.
-
- If you really need to continue using Xalan-J 1, please copy the
- junit-frames-xalan1.xsl from the distribution's etc directory as
- junit-frames.xsl into a new directory and use the task's styledir
- attribute to point to. This is the last version of the XSLT
- stylesheet that is expected to be compatible with Xalan-J 1.
-
-* <csc>'s extraoptions can now contain multiple arguments.
- Bugzilla Report 23599.
-
-* <macrodef> with default values set by properties would be
- seen as new definitions when called twice with different properties.
- This was confusing so the definitions are now treated as similar.
- Bugzilla Report 31215.
-
-* <javadoc> has a new attribute "includenosourcepackages" that can be
- used to document packages that don't hold source files but a
- package.html file. Bugzilla Report 25339.
-
-Fixed bugs:
------------
-
-* eliminate memory leak in AntClassLoader. Bugzilla Report 8689.
-
-* subant haltonfailure=false did not catch all failures. Bugzilla Report 27007.
-
-* macrodef @@ escaping was broken. Bugzilla Report 27069.
-
-* SQL task did not work with Informix IDS 9.2. Bugzilla Report 27162.
-
-* MacroDef did not allow attributes named 'description'. Bugzilla Report 27175.
-
-* Throw build exception if name attribute missing from patternset#NameEntry.
- Bugzilla Report 25982.
-
-* Throw build exception if target repeated in build file, but allow targets
- to be repeated in imported files.
-
-* <apply> didn't compare timestamps of source and targetfiles when
- using a nested <filelist>. Bugzilla Report 26985.
-
-* tagdiff.xml was broken in ant 1.6.1. Bugzilla Report 27057.
-
-* if the basedir contained .. or . dirs, and the build file name contained
- .. or ., the basedir was set incorrectly. Bugzilla Report 26765.
-
-* regression from ant 1.5, exec task outputted two redundant trailing newlines.
- Bugzilla Report 27546.
-
-* NPE when running commons listener. Bugzilla Report 27373.
-
-* <java> swallowed the stack trace of exceptions thrown by the
- executed program if run in the same VM.
-
-* -projecthelp swallowed (configuration) errors silently.
- Bugzilla report 27732.
-
-* filterset used by filtertask doesn't respect loglevel. Bugzilla Report 27568.
-
-* wrong compare used in ProjectComponent for logging. Bugzilla Report 28070.
-
-* failOnAny attribute for <parallel> was broken. Bugzilla Report 28122.
-
-* If <javac> uses gcj and any of the nested <compilerarg>s implies
- compilation to native code (like -o or --main), Ant will not pass
- the -C switch to gcj. This means you can now compile to native code
- with gcj which has been impossible in Ant < 1.6.2.
-
-* <import optional="false"> and <import optional="true">
- behaved identically.
-
-* <xslt> now sets the context classloader if you've specified a nested
- <classpath>. Bugzilla Report 24802.
-
-* <zip> and friends would delete the original file when trying to update
- a read-only archive. Bugzilla Report 28419.
-
-* <junit> and <assertions> are working together. Bugzilla report 27218
-
-* AntClassLoader#getResource could return invalid URLs. Bugzilla
- Report 28060.
-
-* Ant failed to locate tools.jar if the jre directory name wasn't all
- lowercase. Bugzilla Report 25798.
-
-* Redirector exhibited inconsistent behavior with regard to split
- output. When sent to file only, files would be created in all
- cases; when split file-property, files were only created if
- writes were performed.
-
-* fixed case handling of scriptdef attributes and elements.
-
-* UNC pathnames did not work for ANT_HOME or -lib locations on Windows.
- Bugzilla report 27922.
-
-* replacestring tokenfilter only replaced the first occurrence.
-
-* AntLikeTasksAtTopLevelTest failed on cygwin.
-
-* I/O-intensive processes hung when executed via <exec spawn="true">.
- Bugzilla reports 23893/26852.
-
-* JDependTask did not close an output file. Bugzilla Report 28557.
-
-* Using <macrodef> could break XmlLogger. Bugzilla Report 28993.
-
-* <genkey> no longer requires keytool to be in your PATH. Bugzilla
- Report 29382.
-
-* <symlink> could create cyclic links. Bugzilla Report 25181.
-
-* <zip whenempty="skip"> didn't work in a common situation. Bugzilla
- Report 22865.
-
-* <scp> now properly handles remote files and directories with spaces
- in their names. Bugzilla Report 26097.
-
-* <scp> now has (local|remote)tofile attributes to rename files on the
- fly. Bugzilla Report 26758.
-
-* <telnet> and <rexec> didn't close the session. Bugzilla Report 25935.
-
-* <subant> and XmlLogger didn't play nicley together.
-
-Other changes:
---------------
-* doc fix concerning the dependencies of the ftp task
- Bugzilla Report 29334.
-
-* <xmlvalidate> has now a property nested element,
- allowing to set string properties for the parser
- Bugzilla Report 23395.
-
-* Docs fixes for xmlvalidate.html, javadoc.html, starteam.
- Bugzilla Reports 27092, 27284, 27554.
-
-* <pathconvert> now accepts nested <mapper>s. Bugzilla Report 26364.
-
-* Shipped XML parser is now Xerces-J 2.6.2.
-
-* Added nested file element to filelist.
-
-* spelling fixes, occurred. Bugzilla Report 27282.
-
-* add uid and gid to tarfileset. Bugzilla Report 19120.
-
-* <scp> has a verbose attribute to get some feedback during the
- transfer and new [local|remote][File|Todir] alternatives to file and
- todir that explicitly state the direction of the transfer.
-
-* The OS/2 wrapper scripts have been adapted to use the new launcher.
- Bugzilla Report 28226.
-
-* <sshexec> now also captures stderr output. Bugzilla Report 28349.
-
-* <xslt> now supports a nested <mapper>. Bugzilla Report 11249.
-
-* <touch> has filelist support.
-
-* <nice> task lets you set the priority of the current thread; non-forking
- <java> code will inherit this priority in their main thread.
-
-* New attribute "negate" on <propertyset> to invert selection criteria.
-
-* Target now supports a Location member. Bugzilla Report 28599.
-
-* New "pattern" attribute for <date> selector.
-
-* <junit> has a new forkmode attribute that controls the number of
- Java VMs that get created when forking tests. This allows you to
- run all tests in a single forked JVM reducing the overhead of VM
- creation a lot. Bugzilla Report 24697.
-
-* <jar> can now optionally create an index for jars different than the
- one it currently builds as well. See the new <indexjars> element
- for details. Bugzilla Report 14255.
-
-* Permit building under JDK 1.5. Bugzilla Report 28996.
-
-* minor Javadoc changes. Bugzilla Report 28998.
-
-* Misc. corrections in SignJar.java. Bugzilla Report 28999.
-
-* Remove redundant <hr> from javah.html. Bugzilla Report 28995.
-
-* Ignore built distributions. Bugzilla Report 28997.
-
-* A new roundup attribute on <zip> and related task can be used to
- control whether the file modification times inside the archive will
- be rounded up or down (since zips only store modification times with
- a granularity of two seconds). The default remains to round up.
- Bugzilla Report 17934.
-
-* A binary option has been added to <concat>. Bugzilla Report 26312.
-
-* Added DynamicConfiguratorNS, an namespace aware version of
- DynamicConfigurator. Bugzilla Report 28436.
-
-* Add implicit nested element to <macrodef>. Bugzilla Report 25633.
-
-* Add deleteonexit attribute to <delete>.
-
-* Added Target.getIf/Unless(). Bugzilla Report 29320.
-
-* <fail> has a status attribute that can be used to pass an exit
- status back to the command line.
-
-* <fail> accepts a nested <condition>.
-
-* <loadproperties> supports loading from a resource.
- Bugzilla Report 28340.
-
-* Nested file mappers and a container mapper implementation have been
- introduced. Additionally, the <mapper> element now accepts "defined"
- nested FileNameMapper implementations directly, allowing a usage
- comparable to those of <condition>, <filter>, and <selector>.
-
-* New <redirector> type introduced to provide extreme I/O flexibility.
- Initial support for <exec>, <apply>, and <java> tasks.
-
-* <apply> has a new ignoremissing attribute (default true for BC)
- which will allow nonexistent files specified via <filelist>s to
- be passed to the executable. Bugzilla Report 29585.
-
-* <junitreport> now also works with Xalan XSLTC and/or JDK 1.5.
- Bugzilla Report 27541.
-
-* <jspc> doesn't work properly with Tomcat 5.x. We've implemented a
- work-around but don't intend to support future changes in Tomcat
- 5.x. Please use the jspc task that ships with Tomcat instead of
- Ant's.
-
-Changes from Ant 1.6.0 to Ant 1.6.1
-=============================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* License is now Apache Software License 2.0
- see http://www.apache.org/licenses/ for more information
-
-Fixed bugs:
------------
-* Remove a recursive template call in the junit xsls that could trigger a stack
- overflow. It now uses Xalan extensions to call a Java class directly.
- Bugzilla Report 19301
-
-* Fix spurious infinite loop detection for filters (introduced in ant 1.6.0).
- Bugzilla Report 23154.
-
-* Fix handling of default ant namespace for nested elements.
-
-* Fix jboss element of ejb task (introduced in ant 1.6.0).
-
-* <whichresource> failed to load classes correctly.
-
-* Ant could fail to start with a NullPointerException if
- ANT_HOME/lib/ant-launcher.jar was part of the system CLASSPATH.
-
-* presetdef'ed types did not work with the ant-type attribute
-
-* fixed case handling of macrodef attributes and elements. Bugzilla
- Reports 25687 and 26225.
-
-* <java> ignored the append attribute, Bugzilla Report 26137.
-
-* The gcj compiler adapter for <javac> failed if the destination
- directory didn't exist. Bugzilla Report 25856.
-
-* Ant now fails with a more useful message if a new process will be
- forked in a directory and that directory doesn't exist.
-
-* <splash> used to break the build on non-GUI environments. Bugzilla
- report 11482.
-
-* Ant 1.6.0 cannot run build scripts in directories with non-ASCII names.
- Bugzilla Report 26642.
-
-Other changes:
---------------
-* Shipped XML parser is now Xerces-J 2.6.1
-
-* Translate task logs a debug message specifying the number of files
- that it processed. Bugzilla Report 13938.
-
-* <fixcrlf> has a new attribute - fixlast. Bugzilla Report 23262.
-
-* <p4submit> has 2 new attributes, needsresolveproperty and changeproperty.
- Bugzilla Report 25711.
-
-* add description attributes to macrodef attributes and elements.
- Bugzilla Report 24711.
-
-* Extending ClearCase Tasks :
- - Added an extra option to 'failonerr' to each ClearCase task/command.
- - Extended the functionality of cccheckout. It can check (notco) to see if
- the desired element is already checked out to the current view. Thus it
- won't attempt to check it out again.
- - Added three new ClearCase commands: ccmkattr, ccmkdir, ccmkelem
- Bugzilla Report 26253.
-
-* New condition <typefound> that can be used to probe for the declaration
- and implementation of a task, type, preset, macro, scriptdef, whatever.
- As it tests for the implementation, it can be used to check for optional
- tasks being available.
-
-* added nested text support to <macrodef>
-
-* added initial support for Java 1.5. Java 1.5 is now correctly
- detected by Ant and treated just like Java 1.4. You can now specify
- source="1.5" in the <javac> task.
-
-* created new task <cvsversion>
-
-* added support for branch logging via the tag attribute in <cvschangelog>
- Bugzilla Report 13510.
-
-* added support the groovy language in the script and scriptdef tasks
-
-Changes from Ant 1.5.4 to Ant 1.6.0
-===================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* This version of Ant can not be built with JDK 1.1 and requires at
- least Java 1.2 at runtime as well. Compiling for a 1.1 target is
- still supported.
-
-* Targets cannot have the empty string as their name any longer.
-
-* ant.jar's manifest does no longer include a Class-Path entry, so it
- is no longer possible to run Ant via "java -jar ant.jar" without
- manually altering the CLASSPATH. Instead of that a file
- ant-bootstrap.jar is included in the etc directory of the binary
- distribution, copy this to the lib directory and use
- "java -jar ant-bootstrap.jar" instead if you want to run Ant without
- the wrapper script (not recommended).
-
-* The <script> task now requires Apache BSF instead of the older IBM
- version. See <http://jakarta.apache.org/bsf/>
-
-* <xmlproperty> will no longer fail if the file to be loaded doesn't exist.
-
-* XML namespaces are now enabled in the XML parser, meaning XML namespace
- declarations no longer cause errors. However task names containing colons
- will cause errors unless there is a corresponding namespace uri.
-
-* The <ftp> and <telnet> tasks now require Jakarta Commons Net instead
- of the older ORO Netcomponents version. See
- <http://jakarta.apache.org/commons/net/index.html>.
-
-* <input> will no longer prompt the user and wait for input if the
- addproperty attribute is set to a property that has already been
- defined in the project. If you rely on the task waiting for input,
- don't use the addproperty attribute.
-
-* The Class-Path attribute in manifests will no longer merge the
- entries of all manifests found, but will be treated like all other
- manifest attributes - the most recent attribute(s) will be used.
-
-* New Launch mechanism implemented. This moves some functionality from
- the batch files / shell scripts into Java. This removes environment
- limitations, for command issues, directory depth issues on Windows. Also
- allows a per-user library location to be used if the main Ant install
- is locked down.
-
-* The Entry nested element of PropertyFile will not any more have its value
- attribute (actually increment) overwritten with the new value of the entry
- after execution.
-
-* Output stored from a <java> or <exec> task is now exactly as generated. No
- conversion to platform end-of-line characters is performed.
-
-* <translate> will now preserve line endings.
-
-* <ftp> followsymlinks="false" in nested fileset definitions is explicitly
- required in order to exclude remote symbolic links (when doing a get, chmod,
- delete, rmdir).
-
-* The values of the Copy#fileCopyMap variable has changed from String to
- String[]. (In java 1.5 terms it was Hashtable<String, String> and
- is now Hashtable<String, String[]>). This will affect third party code
- that extend Copy and override Copy#doFileOperations.
-
-* <loadproperties> didn't expand properties while <property file="..."/>
- does, so they were not equivalent. This has been fixed, which means
- that propetries may get expanded twice if you use an
- <expandproperties> filterreader. Bugzilla Report 17782.
-
-* User defined tasks and typedefs are now handled internally in the
- same way as predefined tasks and typedefs. Also tasks and typedefs
- are resolved at a later stage. This causes some
- differences especially for user defined task containers.
-
-* <checksum> log message "Calculating checksum ..." has been degraded
- from INFO to VERBOSE.
-
-Fixed bugs:
------------
-* Filter readers were not handling line endings properly. Bugzilla
- Report 18476.
-
-* Filtersets were also not handling line endings properly.
-
-* Expand tasks did not behave as expected with PatternSets.
-
-* <property environment=... /> now works on OS/400.
-
-* <cab> could hang listcab on large <fileset>s.
-
-* The starteam stcheckout, stcheckin tasks now correctly compute
- status of files against whatever local tree they are run against
- and, optionally, will not process a file if it is current.
- Previously you had to process everything unless you ran against the
- default folder which wasn't the normal use-case for ant-starteam.
- The stlist task now similarly displays that status correctly making
- it a more generally useful tool.
-
-* entity includes would cause exceptions if path names included spaces.
-
-* addConfiguredXXX would not work for TaskAdapter wrapped tasks
-
-* Fix <ilasm> outputfile testing so that the output file does not need
- to exist beforehand.
-
-* Ant will now exit with a return code of 1 if it encounters problems
- with the command line arguments.
-
-* ClassLoader creation changes to use a factory method in Project. A new
- class AntClassLoader2 implemented for 1.2+ specific features including
- Package information and addition of classes specified in the Class-Path
- element of a Jar's manifest.
-
-* It is now possible in <exec> to resolve the executable to a project
- basedir or execution dir relative executable. The resolveExecutable
- must be used to pick up such executables.
-
-* splash screen wouldn't disappear when build was finished.
-
-* <exec> output and error streams can now be redirected independently
- to either a property or a file (or both)
-
-* TarEntry's File-arg constructor would fail with a
- StringIndexOutOfBoundsException on all OSes where os.name is shorter
- than seven characters. Bugzilla Report 18105.
-
-* <copy> and <move>'s failonerror didn't apply to filesets pointing to
- non-existant directories. Bugzilla Report 18414.
-
-* The <stripjavacomments> filter sometimes removed parts of string
- constants. Bugzilla Report 17441.
-
-* <antlr> will now recompile your grammar if the supergrammar has
- changed. Bugzilla Report 12691.
-
-* <property env> will now work on Unices with /bin/env instead of
- /usr/bin/env. Bugzilla Report 17642.
-
-* <jar index="on"> could include multiple index lists. Bugzilla 10262.
-
-* The index created by <jar> didn't conform to the spec as it didn't
- include the top-level entries. Bugzilla Report 16972.
-
-* <tar> and <zip> didn't honor the defaultexcludes attribute for the
- implicit fileset. Bugzilla Report 18637.
-
-* The <replacetokens> filter would throw an exception if the token's
- value was an empty string. Bugzilla Report 18625.
-
-* Perforce tasks relying on output from the server such as <p4change>
- and <p4label> were hanging. Bugzilla Reports 18129 and 18956.
-
-* Improve exception and logging behavior of Perforce tasks.
- Bugzilla report 18154.
-
-* build.sh install had a problem on cygwin (with REALANTHOME).
- Bugzilla Report 17257
-
-* <replaceregexp> didn't work for multi-byte encodings if byline was false.
- Bugzilla Report 19187.
-
-* <replaceregexp> was altering unnecessarily the timestamp of the directories
- containing the files to process
- Bugzilla Report 22541.
-
-* file names that include spaces need to be quoted inside the @argfile
- argument using forked <javac> and (all JDKS). Bugzilla Report 10499.
- NB : a first correction was only introducing quotes for JDK 1.4
- It has been changed to quote for all external compilers when paths
- contain spaces.
- Also the backslashes need to be converted to forward slashes
- Bugzilla Report 17683.
-
-* Setting filesonly to true in <zip> and related tasks would cause the
- archives to be always recreated. Bugzilla Report 19449.
-
-* file names that include spaces need to be quoted inside the @argfile
- argument using <javadoc> and JDK 1.4. Bugzilla Report 16871.
-
-* <junit> didn't work with custom formatters that were only available
- on the user specified classpath when a timeout occured. Bugzilla
- Report 19953.
-
-* <different> selector : make ignoreFileTimes effectively default to true
- and fix a bug in the comparison of timestamps. Bugzilla Report 20205.
-
-* <different> selector can now be nested directly under a fileset
- Bugzilla Report 20220.
-
-* <cvstagdiff> had a problem with "dd-MM-yy hh:mm:ss" formats
- Bugzilla Report 15995.
-
-* <cvstagdiff> cvsroot and package attributes added to the root
- element tagdiff of the xml output
- Bugzilla Report 16081.
-
-* <cvstagdiff> had a problem with aliased modules and with requests for multiple modules
- Bugzilla Reports 21373 and 22877.
-
-* <cvstagdiff> could not parse properly the revision number of new files with CVS 1.11.9 or higher
- Bugzilla Report 24406.
-
-* <fixcrlf> make fixcrlf create its temporary files in the default directory
- of FileUtils#createTempFile instead of the destination dir of fixcrlf.
- Bugzilla Report 20870.
-
-* <ejbjar> implementation for Borland.
- Prevent the task from being blocked by error messages coming from java2iiop.
- Bugzilla Report 19385.
-
-* <unzip>'s and <untar>'s nested patternsets didn't work as documented
- when the pattern ended in a slash or backslash. Bugzilla Report 20969.
-
-* <fixcrlf> will now create the parent directories for the destination
- files if necessary. Bugzilla Report 20840.
-
-* <xmlproperty> now handles CDATA sections. BugZilla Report 17195
-
-* <translate> now translate tokens that are placed close together.
- Bugzilla Report 17297
-
-* Nested websphere element for ejbjar does not support spaces in file name.
- Bugzilla Report 21298
-
-* Don't multiply Class-Path attributes when updating jars. Bugzilla
- Report 21170.
-
-* Do not overwrite the value (increment) attribute of PropertyFile nested Entry element.
- Bugzilla Report 21505.
-
-* Prevent sysproperties with no key or no value from being added in <junit>.
- Bugzilla Report 21684.
-
-* Allow references to be properly inherited via antcall
- Bugzilla Report 21724.
-
-* ftp chmod failed when the remote system was UNIX and local system Windows
- Bugzilla Report 21865.
-
-* ftp put with chmod failed when the remote system was UNIX and local system Windows
- Bugzilla Report 23143.
-
-* ftp did not set the ascii mode explicity, causing problems with ftp servers
- having binary as default
-
-* ftp was not able to download files when they were pointed to by symbolic links
- Bugzilla Report 14063.
-
-* ftp is able to download also directories pointed to by symbolic links.
-
-* replace would change \r\n into \r\r\n under Windows.
-
-* junitreport with frames did not display a link for classes without a package
- or in the top package.
- Bugzilla Report 21915.
-
-* Project.toBoolean(String) now handles null as argument and does not throw a
- NullPointerException any more.
-
-* The socket condition will now close the socket created to test.
- Bugzilla Report 23040.
-
-* <junit includeantruntime="true" fork="true"> replaced the CLASSPATH instead
- of adding to it. Bugzilla Report 14971.
-
-* <splash> could fail on JVMs that use null to indicate the system classloader.
- Bugzilla Report 23320.
-
-* <xmlcatalog>s only worked when defined inside of tasks. Bugzilla
- Report 20965.
-
-* <csc> and siblings (<vbc> <jsharpc>) handle large filesets by
-automatic use of response files. Bugzilla report #19630
-
-Other changes:
---------------
-
-* Shipped XML parser is now Xerces 2.6.0
-
-* All tasks can be used outside of <target>s. Note that some tasks
- will not work at all outside of targets as they would cause infinite
- loops (<antcall> as well as <ant> and <subant> if they invoke the
- current build file).
-
-* Six new Clearcase tasks added.
-
-* A new filter reader namely tokenfilter has been added. Bugzilla
- Report 18312.
-
-* A new attribute named skip is added to the TailFilter and
- HeadFilter filter readers.
-
-* The filesetmanifest attribute of <jar> has been reenabled.
-
-* The start and end tokens for <translate> may now be longer than a
- single character.
-
-* <setproxy> lets you set the username and password for proxies that
- want authentication
-
-* <loadproperties> has a new encoding attribute.
-
-* <echoproperties> can now create XML output.
-
-* <echoproperties> has a new srcfile attribute that can make it read
- properties files and output them instead of Ant's properties.
-
-* <filterset> will now resolve filters recursively.
-
-* <input> has a new attribute that allows you to specify a default value.
-
-* Added <image> task (requires JAI).
-
-* <image> task has now proportions attribute in the <scale/> nested element
- instead of keepproportions (bringing in more functionality)
-
-* New condition <isreference>
-
-* <ftp> now has a preservelastmodified attribute to preserve the
- timestamp of a downloaded file.
-
-* new rmdir action for <ftp> that removes directories from a fileset.
-
-* <ftp> has attributes timediffauto and timediffmillis to use together
- with the newer attribute to tell ant to take into account a time difference
- between client and remote side.
- Bugzilla Report 19358.
-
-* <ftp> has been optimized to go directly to the include patterns.
- This reduces scanning time under UNIX when followsymlinks="true"
- and casesensitive="true" (the default)
- Bugzilla Report 20103.
-
-* The SOS and VSS tasks will no longer unconditionally prepend a $ to
- vsspath or projectpath.
-
-* OS/400 now gets detected by the os condition.
-
-* <arg> has a new attribute pathref that can be used to reference
- previously defined paths.
-
-* <xmlproperty> has been improved, you can now expand ${properties},
- define ids or paths and use Ant's location magic for filename resolutions
- in the XML file.
-
-* <xmlcatalog> will now support external catalogs according to the
- OASIS "Open Catalog" standard - if resolver.jar (newer than version
- 1.0) from Apache's xml-commons is in your CLASSPATH.
-
-* Starteam tasks now have support for revision labels and build labels.
- Checkouts now have the option of using repository timestamps, instead
- of current.
-
-* new task <symlink> that creates and maintains symbolic links.
-
-* new tasks <chown> and <chgrp> which are wrappers of the Unix commands.
-
-* new task <attrib> to change file attributes on Windows systems.
-
-* <style> has a new attribute reloadstylesheet to work around a
- bug in widespread Xalan versions.
-
-* <tarfileset> has a new dirmode attribute to specify the permissions
- for directories.
-
-* <fixcrlf>'s eol attribute now also understands "mac", "unix" and "dos".
-
-* <classfileset> now picks up dependencies of the form MyClass.class. This
- works for the code generated by the Sun java compiler. It may not work for
- all compilers.
-
-* a new attribute "globalopts" can be added to all Perforce tasks.
- You can put in it all the strings described by p4 help usage. Refer to
- the docs for more information.
-
-* new Perforce tasks <p4integrate> , <p4resolve>, and <p4labelsync>
-
-* <p4submit> will change the property p4.change if the Perforce server
- renumbers the change list.
- It will set the property p4.needsresolve if the submit fails,
- and the message says that file(s) need to be resolved.
-
-* <replaceregexp> now has an optional encoding attribute to support
- replacing in files that are in a different encoding than the
- platform's default.
-
-* The <exec> task may now have its input redirected from either a file
- or a string from the build file. The error output can be separated
- to a different file when outut is redirected. standard error may be
- logged to the Ant log when redirecting output to a file
-
-* The <java> task also supports the input redirection and separate
- error streams introduced to the <exec> task. In addition, it is now
- possible to save the output into a property for use within the build
- file as was possible with <exec> in Ant 1.5
-
-* The <javadoc> task <tag> subelement has been enhanced to allow files
- with tag mappings to be used.
-
-* New tasks: <scp> supports file transfers, <sshexec> executes a
- command over SSH. They require jsch, a BSD licensed SSH library that
- can be found at http://www.jcraft.com/jsch/index.html
-
-* New filterreader <escapeunicode/>.
-
-* Support for HP's NonStop Kernel (Tandem) OS has been added.
-
-* <cab>'s basedir attribute is now optional if you specify nested
- filesets. Bugzilla Report 18046.
-
-* New task <sync> that synchronizes two directory trees.
-
-* <apply> has new forwardslash attribute that can force filenames to
- use forward slashes (/) as file separators even on platforms with a
- different separator. This is useful if you want to run certain
- ported Unix tools.
-
-* Copy has a new outputencoding attribute that can be used to change
- the encoding while copying files. Bugzilla Report 18217.
-
-* The xml formatter for JUnit will now honor test case names set with
- setName. Bugzilla Report 17040.
-
-* JUnit now has an attribute reloading, which, when set to false,
- makes the task reuse the same class loader for a series of tests.
-
-* <concat> now supports filtering and can check timestamps before
- overriding a file. Bugzilla Report 18166.
-
-* <junit> has a new attribute tempdir that controls the placement of
- temporary files. Bugzilla Report 15454.
-
-* <jdepend> now supports a new nested element <classespath> which is
- the same as <sourcespath> but point to compiled classes (the
- prefered mode of operation for JDepend > 2.5). Additionally, nested
- <exclude> elements can be used to exclude certain packages from
- being parsed. Bugzilla Report 17134.
-
-* The JProbe tasks now also work with JProbe 4.x. Bugzilla Report 14849.
-
-* <javacc> and <jjtree> will now autodetect JavaCC 3.x and can use it.
-
-* <sql> has a new attribute to control escape processing.
-
-* <sql> is able to display properly several resultsets if you are
- running a compound sql statement. Bugzilla Report 21594.
-
-* A new <containsregexp> selector has been added, that selects files
- if their content matches a certain regular expression.
-
-* <antlr>'s debug attribute has been enabled. Bugzilla Report 19051.
-
-* <mail> has a new attribute charset. Bugzilla Report 15434.
-
-* <mail> has new attributes user and password for SMTP auth.
- maillogger can also use this.
- The implementation only works with JavaMail (encoding="MIME").
- Implementation with plain mail remains to do.
- Bugzilla Report 5969.
-
-* <mail> and mailloger support SMTP over TLS/SSL
- Bugzilla Report 19180.
-
-* <mail> the attributes from, replyto ,tolist, cclist, bcclist
- can now contain email addresses of the form name <address@xyz.com>
- or (name) address@xyz.com
- Bugzilla Report 22474.
-
-* <mail> (version PlainMail)
- prevent blank headers from being sent,
- make the order of the headers of plain mail messages predictable
- Bugzilla Report 22088.
-
-* <zipfileset> can now be defined in the main body of a project
- and referred to with refid="xyz". Bugzilla Report 17007.
-
-* A wrapper script for OS/2 has been added.
-
-* <unzip> will now detect and successfully extract self-extracting
- archives. Bugzilla Report 16213.
-
-* <stcheckout> has a new attribute "converteol" that can be used to
- control the automatic line-end conversion performed on ASCII files.
- Bugzilla Report 18884.
-
-* Users can now modify the list of default excludes using the new
- defaultexcludes task. Bugzilla Report 12700.
-
-* There is a new data type <propertyset> that can be used to collect
- properties. It is supported by <ant>, <antcall>, <subant>, <java>,
- <echoproperties> and <junit>.
-
-* <concat> can now control the encoding of the output as well and optionally
- add new-line characters at the end of files that get concatenated but
- don't end in newlines. Bugzilla Report 12511.
-
-* <rpm> will detect the rpmbuild executable of RedHat 8.0 and newer
- and use that if it is on your PATH. Bugzilla Report 14650.
-
-* A new task <rexec> has been added that requires commons-net to work.
- Bugzilla Report 19541.
-
-* <javadoc> now supports a nested <arg> element in addition to the
- additionalparams attribute.
-
-* You can now determine the order of standard tags in <javadoc> via
- <tag> elements - you must not use the description attribute for them.
- Bugzilla Report 18912.
-
-* <javadoc> now supports the -noqualifier switch. Bugzilla Report 19288.
-
-* <javac>'s executable attribute can now also be used to specify the
- executable for jikes, jvc, sj or gcj. Bugzilla Report 13814.
-
-* <javac> has a new attribute tempdir that can control the placement
- of temporary files. Bugzilla Report 19765.
-
-* A new magic property build.compiler.jvc.extensions has been added
- that can be used to turn of Microsoft extensions while using the jvc
- compiler. Bugzilla Report 19826.
-
-* You can now limit the parallelism of <apply> and <chmod> by using the new
- maxparallel attribute.
-
-* With the new addsourcefile attribute, you can make <apply> ommit the
- source file names from the command line. Bugzilla Report 13654.
-
-* <apply> and <chmod> now support nested <filelist>s as well as <dirset>s.
- Bugzilla Reports 15929 and 20687.
-
-* <apply> and <chmod> will display a summary if you set the new
- verbose attribute to true. Bugzilla Report 19883.
-
-* <copy>/<move>'s failonerror attribute can now also be used to
- continue the build if an I/O error caused a problem. Bugzilla
- Report 12999.
-
-* new selector <type/> allowing to select only files or only directories.
- Bugzilla Report 20222.
-
-* <java> and <junit> now support a nested <bootclasspath> element that
- will be ignored if not forking a new VM.
-
-* <junit>'s nested <formatter> elements now support if/unless clauses.
-
-* <ejbjar>
- cmpversion attribute added
- jboss element will look for jbosscmp-jdbc.xml descriptor
- if ejbjar has cmpversion="2.0" set
- Bugzilla Reports 14707 and 14709.
-
-* <pvcs> config attribute added to set the location of a specific PVCS
- .cfg file
- Bugzilla Report 9752
-
-* <mapper> has an "unpackage" mapper
- Bugzilla Report 18908
-
-* Added <scriptdef> task allowing tasks to be defined using any BSF-supported
- scripting language.
-
-* <touch>'s datetime attribute can now accept time with a granularity
- of seconds as well. Bugzilla Report 21014.
-
-* <checksum> has two new properties: totalproperty and todir.
-
-* FileUtils#createTempFile will now create temporary files in the
- directory pointed to by the property java.io.tmpdir
-
-* <unzip> and friends now supports an optional encoding attribute to
- enable it to expand archives created with filenames using an encoding
- other than UTF8. Bugzilla Report 10504.
-
-* <patch> has a new attribute destfile that can be used to create a new
- file instead of patching files in place.
-
-* OpenVMS is detected as a valid OS family.
-
-* DirectoryScanner has been optimized for cases where include patterns do not
- start with wildcards. Bugzilla Report 20103.
-
-* DirectoryScanner begins to be optimized not to scan excluded directories.
- Bugzilla Report 21941.
-
-* Added keep-going feature. Bugzilla Report 21144
-
-* The archives generated by <zip> and friends will now contain CRC and
- size information in the "local file header", thereby providing this
- information to applications that read the archives using
- java.util.ZipInputStream. Bugzilla Report 19195.
-
-* <copy> and <move> can now handle mappers that return multiple
- mappings per source path. This behaviour is enabled by using
- an enablemultiplemapping attribute. Bugzilla Report 21320.
-
-* <exec> will now work on OpenVMS (please read the notes in
- <exec>'s manual page). Bugzilla Report 21877.
-
-* <exec> will now have a new attribute spawn (default false).
- If set to true, the process will be spawned. Bugzilla Report 5907.
-
-* <java> will now have a new attribute spawn (default false).
- If set to true, the process will be spawned. Bugzilla Report 5907.
-
-* <parallel> now supports a timeout which can be used to recover
- from deadlocks, etc in the parallel threads. <parallel> also
- now supports a <daemons> nested element. This can be used to
- run tasks in daemon threads which the parallel task will not
- wait for before completing. A new attribute failonany will cause
- <parallel> to throw an exception if any thread fails without
- waiting for all other threads to complete.
-
-* <zip> and friends will consume far less memory than they used to
- when run with compress="false". Bugzilla Report 21899.
-
-* <if/> and <unless/> attributes added to <param/> element of <style>
- Bugzilla Report 22044
-
-* <zip> and friends have a new attribute "keepcompression" that can be
- used to incrementally build an archive mixing compressed and uncompressed
- entries.
-
-* <junit>'s XML formatter adds a new classname attribute to the <testcase>
- elements.
-
-* new <permissions> type add permission handling to the code
- this type can be nested in the <java> and <junit> tasks.
- Bugzilla Report 22533.
-
-* additional shortcuts for ant options (-d --> -debug, -e --> -emacs,
- -h --> -help, -p --> -projecthelp, -s --> -find).
-
-* new selector <modified>. "cache" was renamed to "modified".
- Bugzilla Report 20474.
-
-* <stcheckout> and <stlist> have a new asofdate attribute that can be
- used to checkout/list files based on a date instead of a label.
- Bugzilla Report 20578.
-
-* New filter <concatfilter>. Adds the content of file at the beginning
- or end of a file. Discussion started at
- http://marc.theaimsgroup.com/?l=ant-user&m=106366791228585&w=2
-
-* New task <import>
-
-* New task <macrodef>
-
-* New task <presetdef>
-
-* Ant libraries that can make use of namespaces to avoid name
- clashes of custom tasks
-
-
-* <java> and <junit> now support <assertions>, which let you enable
- and disable Java1.4 assertions on a package or class basis. These
- only work when fork=true, currently.
-
-* .NET tasks expanded with VB support <vbc> and J#, via <jsharp>,
- <importtypelib> and <ilasm>. <csc> supports nested <src> types,
- <defines> for (potentially conditional) definitions, <reference>
- filesets for references. The executable attribute lets you switch to
- mono or other implementations -<csc> has been tested with Mono on
- Linux and OSX.
-
-
-Changes from Ant 1.5.3 to Ant 1.5.4
-===================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* If the Visual Age tasks used to work for you, they may stop doing so
- now - and we'd like to know about it. The current set of tasks is
- supposed to work with any version of VAJ starting with 3.0.
-
-Fixed bugs:
------------
-
-* The Visual Age for Java tasks didn't work (at least for versions 3.0
- and higher). Bugzilla Report 10016.
-
-* URL-encoding in <vaj*port> didn't work properly.
-
-* VAJRemoteUtil called getAbsolutePath instead of getPath
- causing problems when using a Windows VAJ server from a UNIX server.
- Bugzilla Report 20457.
-
-* VAJImport task failed with NullPointerException when using DirectoryScanner.
- Bugzilla Report 22080.
-
-Other changes:
---------------
-
-* Shipped XML parser is now Xerces 2.5.0
-
-* <javah> will invoke oldjavah on JDK 1.4.2. Bugzilla Report 18667.
-
-* The VAJ tasks now support a haltonfailure attribute to conditionally
- keep building even if they fail.
-
-* It is now possible to use the latest (versioned or unversioned) edition
- in <vajload> by using special wildcard characters. Also fixes
- Bugzilla Report 2236.
-
-Changes from Ant 1.5.2 to Ant 1.5.3
-===================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* The <zip> task and friends have again changed a method signature
- (sorry, was necessary to fix bug 17780). The return type of
- getResourcesToAdd has changed.
-
-Fixed bugs:
------------
-
-* <zipfileset>'s filemode would get ignored and the dirmode was used
- for the included files as well. As a side effect, WinZIP was unable
- to extract or display the files, so they seemed to be missing from
- the archive. Bugzilla Report 17648.
-
-* <ftp> could use the wrong path separator when trying to change the
- remote working directory. Bugzilla Report 17735.
-
-* <jar update="true"> would loose all original files if you didn't
- specify any nested <(zip)fileset>s and the manifest had changed.
- Bugzilla Report 17780.
-
-* If you used a value starting with \ on Windows for the appxml
- attribute of <ear> or the webxml attribute of <war>, it would be
- ignored. Bugzilla Report 17871.
-
-* Ant will no longer implicitly add Sun's rt.jar in <javac> when you
- use jvc and don't specify a bootclasspath. Bugzilla Report 18055.
-
-* The prefix attribute of <zipfileset> would not generate directory
- entries for the prefix itself. Bugzilla Report 18403.
-
-* starteam checkout can now handle deleted labels. Bugzilla Report 17646.
-
-* The Unix wrapper script failed if you invoked it as a relative
- symlink and ANT_HOME has not been set. Bugzilla Report 17721.
-
-Other Changes:
---------------
-* Added ability to specify manifest encoding for the <jar> and
- <manifest> tasks
-
-Changes from Ant 1.5.1 to Ant 1.5.2
-=============================================
-
-Changes that could break older environments:
---------------------------------------------
-* ANT_OPTS environment variable is now applied at the start of the
- Java command line, allowing position specific parameters of some
- JVMs, such as -classic to be specified.
-
-* ZipScanner#getIncludedFiles will now return the names of the ZipEntries
- that have been matched instead of the name of the archive.
-
-* The <zip> task and friends have been heavily modified, almost every
- method signature of the Zip class has changed. If you have subclassed
- Zip (or one of its subclasses), your class will most likely not
- compile against the current code base. If it still compiles, it will
- probably not work as in Ant 1.5.1.
-
-Fixed bugs:
------------
-* <translate> was not ignoring comment lines.
-
-* <manifest> wouldn't update an existing manifest if only an attribute
- of an existing section changed.
-
-* ant.bat now supports the ANT_ARGS and JAVACMD environment variables
- again (like Ant 1.5 did).
-
-* The "plain" <junit> <formatter> could throw a NullPointerException
- if an error occured in setUp.
-
-* <junit> will now produce output when a test times out as well.
-
-* <replace> would count some internal character replacements when
- reporting the number of replaced tokens.
-
-* <concat> would cause an exception if a <filelist> pointed to files
- that do not exist.
-
-* <javadoc> will now pass -source to custom doclets as well.
-
-* <cvstagdiff> would throw a NullPointException if there had been no
- differences.
-
-* <cvschangelog> could miss today's changes.
-
-* <concat> could append newline characters between concatenated files.
-
-* <xmlvalidate> ignored the specified encoding of the files to
- validate.
-
-* the errorsbeginat attribute of the <http> condition didn't work.
-
-* Ant will try to force loading of certain packages like com.sun.*
- from the system classloader. The packages are determined by the
- version of the JVM running Ant.
-
-* Ant didn't find the runtime libraries on IBM's JDK 1.4 for Linux.
-
-* random component of temporary files is now always a positive integer.
-
-* Ant could incorrectly try to use the 1.4 regexp implementation even
- if it isn't available if you run the JVM with -Xverify:none.
-
-* Ant would die with an exception if you used nested <reference>
- elements in Ant and the refid attribute didn't point to an existing
- project reference.
-
-* The <get> task can now be compiled (and Ant thus bootstrapped) using
- Kaffee.
-
-* build.sysclasspath will now be honored by more tasks.
-
-* The signjar keystore attribute has been reverted to a String allowing
- it to once again accept URLs. This should not affect current File based usage
- unless you are extending the Signjar task.
-
-* <jar update="true"> would remove the original manifest.
-
-* fix up folder creation in PVCS task
-
-* <tar>'s up-to-date check didn't work for nested <(tar)fileset>s.
-
-* Corrected a problem in XMLLogger where it would not associated
- messages with a taskdef'd task
-
-* <uptodate> now works when using attributes (i.e. not filesets) and pointing
- to the same file
-
-* Java task (and output system) now stores output which doos not end
- with a line feed.
-
-* splash screen wouldn't disappear when build was finished.
-
-* <exec> now supports OS/2.
-
-* <zip> and friends would only update/recreate existing archives if
- the files to add/update have been newer than the archive.
-
-* <javadoc>'s <link> element could fail for offline="true" on some JDKs.
-
-Other changes:
---------------
-
-* MailLogger now sets the Date header correctly.
-
-* Shipped XML parser is now Xerces 2.3.0
-
-* signjar now accepts a maxmemory attribute to allow the memory allocated to the
- jarsigner tool to be specified. The jarsigner from the JDK's JAVA_HOME bin
- dir is now used rather than the first jarsigner on the path.
-
-* **/.DS_Store has been added to the list of default pattern excludes.
-
-* The Created-By header in the default manifest now contains the JVM
- vendor and version according to the jar specification. A new header,
- Ant-Version provides the Ant version used to create the jar.
-
-* <zip> can now store Unix permissions in a way that can be
- reconstructed by Info-Zip's unzip command.
-
-Changes from Ant 1.5.1Beta1 to 1.5.1
-====================================
-
-Fixed bugs:
------------
-
-* <tstamp>'s prefix attribute failed to apply to nested <format> elements.
-
-* <junitreport> created an empty junit-noframes.html if no format had
- been specified.
-
-* <basename> would remove more than it should if the file name
- contained more than one dot.
-
-* <filterset>s nested into <filterset>s didn't work.
-
-Other changes:
---------------
-
-* Shipped XML parser is now Xerces 2.2.0
-
-* Filesets now support a 'file' attribute, allowing a single-file
- fileset to be constructed without having to specify its parent
- directory separately.
-
-* <junit> will now return the result of a call to getName instead of
- "unknown" for Test implementations that don't extend TestCase but have
- a public String getName() method.
-
-Changes from Ant 1.5 to 1.5.1Beta1
-==================================
-
-Fixed bugs:
------------
-* Date/time in CvsChangeLog was in local timezone and 12 hour format leading
- to a problem when sorting by time. It is now UTC (GMT) and in 24-hour
- format as per cvs 'specifications'.
-
-* CvsTagDiff now supports ampersand modules or modules that have a different
- root directory than their name.
-
-* EjbJar threw NPEs for the Websphere element. The property 'websphere.home'
- was not documented.
-
-* Mail example in the documentation was not correct.
-
-* Checksum was broken in the following scenario:
- (using verifyproperty OR in a condition) AND using filesets
- with multiple files.
-
-* The ExpandProperties filter threw NPEs when defined using
- the <filterreader> format.
-
-* The sh wrapper script didn't work under Cygwin if ANT_HOME wasn't
- set with a Unix style filename.
-
-* The sh wrapper script could fail if you started Ant from a directory
- with whitespace in its name.
-
-* ant -diagnostics was not working properly when the task dependency
- was missing and was just printing the missing dependency.
-
-* If a task got redefined via <taskdef>, it lost its child elements.
-
-* <property>'s classpathref attribute was broken.
-
-* <arg line="''" /> would result in no command line argument, will now
- be a single empty argument. Use <arg value="''"/> if you need the
- quotes literally.
-
-* <replaceregexp> could append a newline character at the end of the
- file.
-
-Other changes:
---------------
-
-* Appendix E of Java Development with Ant (Loughran/Hatcher) was
- contributed to the docs.
-
-* <available> will only print deprecration warnings if it is actually
- used to change the value of a property.
-
-Changes from Ant 1.5beta3 to Ant 1.5
-====================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* The filesetmanifest attribute added to <jar> after the 1.4.1
- release has been removed for now. This change may affect only
- the 1.5Beta/1.6Alpha users. An attempt will be made to add this
- feature back into Ant 1.6.
-
-Fixed bugs:
------------
-
-* <zip> and friends would always update existing archive if you set
- the update attribute to true.
-
-* To support backward compatibility with older versions, <pathconvert>
- will once again set the property, even if the result is the empty
- string, unless the new 'setonempty' attribute is set to false|no|off
- (default is "true").
-
-* The manifest task would crash XmlLogger
-
-Other changes:
---------------
-
-* added **/.svn and **/.svn/** to the default excludes
-
-Changes from Ant 1.5beta2 to Ant 1.5beta3
-=========================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* <pvcs> default filenameformat has been different from Ant 1.4.1.
- Now it is different from 1.5beta1 and 1.5beta2.
-
-* <pathconvert> won't set the property if the result is the empty string.
-
-Fixed bugs:
------------
-
-* <available> could fail to find files or directories that happen to
- start with the name of the project's basedir but are not children of
- the basedir.
-
-* Nested <property>'s inside <ant> can now be overriden by subsequent
- <ant> and <antcall> tasks.
-
-* <xslt>'s outputtype attribute wouldn't do anything.
-
-* <linecontains> filterreader could swallow lines.
-
-* <sequential> used to configure the tasks (set their attributes)
- before the first task has been executed. This means that properties
- that have been set by nested task seemed to be unset for the other
- tasks in the same <sequential> element.
-
-* <javac>'s sourcepath setting has been ignored by some compiler
- implementations.
-
-* <javadoc>'s packagelist attribute didn't work.
-
-* the plain mailer would always use port 25 in <mail>.
-
-* Ant's default logger could swallow empty lines.
-
-* ejbjar's iPlanet nested element now can process multiple descriptors.
-
-* IPlanetEjbc was looking in the wrong place for four iiop files.
-
-* <javac> would pass the -source switch to JDK 1.3's javac, even
- though it doesn't support it.
-
-Other changes:
---------------
-
-* <checksum> now uses a buffer (of configurable size).
-
-* The "Trying to override task definition" warning has been degraded
- to verbose level if the two task definitions only differ in the class
- loader instance that has loaded the definition.
-
-* Add a jvmargs to the ejbjar's weblogic element to allow additional
- arguments to be provided to the VM runnign ejbc. Document the
- jvmdebuglevel attribute which can be used to avoid warnings about
- interface classess being found on the classpath. Document the new
- <sysproperty> element which allows JVM properties to be defined.
- Added an outputdir attribute to allow the destination to be a
- directory into which the exploded jar is written.
-
-* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5
-
-Changes from Ant 1.5beta1 to Ant 1.5beta2
-=========================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Properties will now be expanded in mail message bodies. This means
-that one $ sign will be stripped if your mail message contains the text
-$$.
-
-* org.apache.tools.ant.taskdefs.Expand no longer extends MatchingTask.
-
-* Available#setFile now again uses a File argument as it did in 1.4,
-this may break environments that have been adapted to the String
-argument version present in 1.5beta1.
-
-Fixed bugs:
------------
-* When <move> attempts a rename, it deletes the destination file, if it
- exists, before renaming the source file. However, <move> was not
- checking if the destination file was actually a directory before
- trying to delete it.
-
-* Make CVS Tasks to work under Cygwin.
-
-* Fix LineContains to handle huge files elegantly without causing
-Stack Overflows.
-
-* if you ask for the "classic" compiler on Java1.4, you get upgraded to
-"modern" because there is no classic compiler any more.
-
-* the <http> condition was viewing 404 'not found' exceptions as success. Now
-it defaults to viewing any response >=400 as an error, and has an errorsBeginAt
-attribute you can use if you want a higher or lower value.
-
-* <get> throws a build exception on an http authorization error, unless you
-have set ignoreerrors to true.
-
-* <wsdltodotnet> was spelt in Wintel case: <WsdlToDotnet>. It is now lower
-case, though the old spelling is retained for anyone who used it.
-
-* Merging of Manifests in jar now works as documented.
-
-* paths that have been separated by colons would be incorrectly parsed
-on NetWare.
-
-* runant.pl now supports NetWare.
-
-* <tempfile> and <setproxy> tasks were in beta1, but not defined by
-default; They now are. <tempfile> fills a property with the name of a
-temporary file; <setproxy> lets you set the JVM's http, ftp and socks proxy
-settings.
-
-* <available classname="foo" ignoresystemclasses="true"> failed for
-JDK 1.1 and 1.2, even if the class could be found on the
-user-specified classpath.
-
-* <property environment=... /> now works on z/OS.
-
-* forked <javac> failed for the wrong reason on JDK 1.1 - Ant would
-use a temporary file to hold the names of the files to compile under
-some conditons, but 1.1 doesn't support this feature. Ant will no
-longer try this, but you may run into problems with the length of the
-command line now.
-
-* the refid attribute for <property>s nested into <ant> or <param>s
-nested into <antcall> didn't work.
-
-* <replaceregexp> didn't work for nested <fileset>s.
-
-* <javadoc> dropped sourcepath entries if no "interesting" .java
-source files could be found below them. This has been backwards
-incompatible and caused problems with custom doclets like xdoclet.
-
-* Using the doclet, docletpath or docletpathref attributes of
-<javadoc> may have caused NullPointerExceptions.
-
-* nested <filesets> of <javadoc> would include too much.
-
-* <dependset> will no longer choke on <targetfileset>s that point to
-non-existing directories.
-
-* <patch> didn't work at all.
-
-* <replace> and <replaceregexp> now fail if the file they are working
-on is locked.
-
-* <javadoc> would pick up the wrong executable in the combination JDK
-1.2 and AIX.
-
-Other changes:
---------------
-
-* z/OS now gets detected by the os condition.
-
-* <fileset> and <dirset> now have an optional followsymlink attribute
-that can prevent Ant from following symbolic links on some platforms.
-
-* BeanShell is now supported in the <script> task.
-
-* <ejbjar> under Weblogic attempts to use the ejbc20 compiler for 2.0 beans
- based on the deployment descriptor's DTD reference. Under weblogic 7.00 Beta
- this ejbc class has been deprecated. To avoid the deprecation warning use
- ejbcclass="weblogic.ejbc".
-
-* <ejbjar> will add a manifest to the generated jar based on the naming
- convention in use. This overrides the manifest specified in the
- <ejbjar> attribute
-
-
-Changes from Ant 1.4.1 to 1.5beta1
-==================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Important: Single $ signs are no longer silently stripped!
- Before you panic that we have broken all your build files, we have kept
- the old "$$" -> "$" behaviour. So only build files which accidentally had
- a $ sign in a string that was being silently stripped may break.
- We added this fix to stop newbie confusion; if you want to write a
- build file which works on ant versions 1.4.1 or earlier, stay with
- the double $$ sign rule.
-
-* Project.getBuildListeners now returns a clone of the listener
- list. Changes to the returned list will not affect the listeners
- currently attached to the Project. It also means that it is safe to
- iterate over the returned list if listeners are added or removed
- during the traversal.
-
-* <pvcs> default filenameformat has been different from Ant 1.4.1.
-
-* Some messages that are printed during startup will not be
- written to the logfile specified via -logfile as they might destroy
- the format of the file for special BuildLoggers (like XmlLogger).
-
-* The filesetmanifest attribute added to <jar> after the 1.4.1
- release has been removed for now. This change may affect only
- the 1.5Beta/1.6Alpha users. An attempt will be made to add this
- feature back into Ant 1.6.
-* Shipped XML parser is now Xerces 2.0.1 along with the XML Parser APIs.
- XML Parser APIs is a separate jar that contains the necessary
- JAXP/DOM/SAX classes.
-
-* <telnet> was fixed to expand properties inside nested <read> and
- <write> elements; before this only happened when you assigned the text
- to the string attribute. If you had $ signs in the string, they may
- need escaping.
-
-* the RegexpMatcher interface has been extended to support case
- insensitive matches and other options - custom implementations of
- this interface won't work any longer. We recommend to use the new
- Regexp interface that also supports substitution instead of the
- RegexpMatcher interface in the future.
-
-* <gzip> will throw an exception if your src attribute points to a directory.
-
-* Unjar, Unzip and Unwar will throw an exception if the Src attribute
- represents a directory. Support for nested filesets is provided
- instead.
-
-* It is no longer possible to overwrite a property using tasks like
- <condition>, <exec>, <pathconvert>, or <tstamp>. In some exceptional
- cases it will generate a warning if you attempt to overwrite an
- existing property.
-
-* Taskwriters please note: Whenever tasks had any overloaded set* methods,
- Ant's introspection mechanism would select the last overloaded method
- provided to it by the Java Runtime. A modification has now been made such
- that when the Java Runtime provides a method with a String as its argument,
- a check is made to see if there is another overloaded method that takes in
- some other type of argument. If there is one such method, then the method
- that takes in String as an argument is not selected by the Introspector.
-
-* The pattern definition **/._* has been included into the Default
- Excludes list.
-
-* <propertyfile>'s <entry> element was modified to remove "never" as a value
- as its behavior was undocumented and flakey.
-
-* The -projecthelp flag now only prints out targets that include the
- 'description' attribute, unless the -verbose or -debug flag is included
- on the Ant command line.
-
-* Ant's testcases now require JUnit 3.7 or above, as they now use the new
- assertTrue method instead of assert.
-
-* If the 'output' attribute of <ant> is set to a simple filename or a
- relative path, the file is created relative to ${basedir}, not ${user.dir}.
-
-* The default value for build.compiler is now javac1.x with x
- depending on the JDK that is running Ant instead of classic/modern.
-
-Fixed bugs:
------------
-
-* <available> could fail to find files or directories that happen to
- start with the name of the project's basedir but are not children of
- the basedir.
-
-* Nested <property>'s inside <ant> can now be overriden by subsequent
- <ant> and <antcall> tasks.
-
-* <xslt>'s outputtype attribute wouldn't do anything.
-
-* <linecontains> filterreader could swallow lines.
-
-* <sequential> used to configure the tasks (set their attributes)
- before the first task has been executed. This means that properties
- that have been set by nested task seemed to be unset for the other
- tasks in the same <sequential> element.
-
-* <javac>'s sourcepath setting has been ignored by some compiler
- implementations.
-
-* <javadoc>'s packagelist attribute didn't work.
-
-* the plain mailer would always use port 25 in <mail>.
-
-* Ant's default logger could swallow empty lines.
-
-* ejbjar's iPlanet nested element now can process multiple descriptors.
-
-* IPlanetEjbc was looking in the wrong place for four iiop files.
-
-* <javac> would pass the -source switch to JDK 1.3's javac, even
- though it doesn't support it.
-
-* <zip> and friends would always update existing archive if you set
- the update attribute to true.
-
-* To support backward compatibility with older versions, <pathconvert>
- will once again set the property, even if the result is the empty
- string, unless the new 'setonempty' attribute is set to false|no|off
- (default is "true").
-
-* The manifest task would crash XmlLogger
-
-* A bug existed that prevented generated log files from being deleted as
- part of the build process itself. This has now been fixed.
-
-* Fixed bug where <move> ignored <filterset>s.
-
-* Ant works properly with the combination of Java1.4/WindowsXP.
-
-* Fixed bug where <java> used to sometimes invoke class constructors twice.
-
-* Fixed bug with 4NT shell support.
-
-* Fixed bug where ant would not perform ftp without remotedir being
- specified even though this was not mandatory.
-
-* Fixed bug where ant would not copy system properties into new Project
- in ant/antcall tasks when inheritall="false" is set.
-
-* <propertyfile> would not close the original property file.
-
-* <ant> will no longer override a subbuild's basedir with inheritall="true".
-
-* Fixed problem with the built-in <junit> formatters which assumed
- that only one test could be running at the same time - this is not
- necessarily true, see junit.extensions.ActiveTestSuite.
-
-* <jar>'s whenEmpty attribute is useless as JARs are never empty, they
- contain at least a manifest file, therefore it will now print a
- warning and do nothing.
-
-* <typedef> hasn't been all that useful as it couldn't be used outside
- of targets (it can now) and nested "unknown" elements have always
- been considered to be tasks (changed as well).
-
-* <fixcrlf> would fail for files that contained lines longer than 8kB.
-
-* Some junit formatters incorrectly assumed that all testcases would
- inherit from junit.framework.TestCase.
-
-* <fixcrlf> dropped the first characters from Mac files.
-
-Other changes:
---------------
-
-* <checksum> now uses a buffer (of configurable size).
-
-* The "Trying to override task definition" warning has been degraded
- to verbose level if the two task definitions only differ in the class
- loader instance that has loaded the definition.
-
-* Add a jvmargs to the ejbjar's weblogic element to allow additional
- arguments to be provided to the VM runnign ejbc. Document the
- jvmdebuglevel attribute which can be used to avoid warnings about
- interface classess being found on the classpath. Document the new
- <sysproperty> element which allows JVM properties to be defined.
- Added an outputdir attribute to allow the destination to be a
- directory into which the exploded jar is written.
-
-* ejbjar now supports Borland Enterprise Server 5 and Jonas 2.5
-
-* added **/.svn and **/.svn/** to the default excludes
-* Selector Elements now provide a way to create filesets based on
- sophisticated selection criteria.
-
-* Gzip and Bzip2 files can now be constructed in the fly when using
- the tar task without having to create the intermediate tar file on
- disk. The Untar task can also untar GZip and BZip2 files on the fly
- without creating the intermediate tar file.
-
-* New optional type, <classfileset> added.
-
-* <ejbjar> now allows control over which additional classes and interfaces
- are added to the generated EJB jars. A new attribute "dependency" can be
- defined which controls what classes are added. The addition of classes now uses
- the Jakarta-BCEL library rather than reflection, meaning bean classes are
- no longer loaded into Ant's JVM. The default dependency analyzer is known as
- the ancestor analyzer. It provides the same behaviour as the 1.4.1 version of
- <ejbjar>. If the BCEL library is not present, a warning will be issued stating
- the ancestor analyzer is not available. In this case <ejbjar> will continue
- to function but will not add super classes to the jar.
-
-* <available> has a new attribute named ignoreSystemClasses.
-
-* New task <cvschangelog/> generates an XML report of changes that occur
- on CVS repository.
-
-* New filter readers: ClassConstants, ExpandProperties, HeadFilter,
- LineContains, LineContainsRegExp, PrefixLines, ReplaceTokens,
- StripJavaComments, StripLineBreaks, StripLineComments, TabsToSpaces,
- TailFilter.
-
-* <copy>, <loadfile>, <loadproperties>, <move> support FilterChains
- of FilterReaders.
-
-* New task <loadproperties> to load contents of file as Ant properties,
- with nested <filterchain> elements.
-
-* New task <loadfile> to load a whole file into a property.
-
-* New task <echoproperties> to list your current properties to the screen
- or a file.
-
-* New tasks <bzip2> and <bunzip2> to pack and unpack files using the
- BZip2 alogrithm.
-
-* New tasks <replaceregexp>, <checksum>, <translate>, <waitfor>,
- <manifest>, <vsscp>, <vssadd>, <vsscreate>, <splash>, <basename>, <dirname>,
- <concat>, <sourceoffsite>, <jarlib-available>, <jarlib-display>,
- <jarlib-manifest>, <jarlib-resolve>.
-
-* A new combined <mail> task, which replaces the old <mail> and
- <mimemail> tasks, has been added. The <mimemail> task, and
- old SendEmail and MimeMail classes have been deprecated.
-
-* Mail task allows specification of port number.
-
-* Users can control what <zip> and <jar> must do when duplicate files
- are found. A new element <zipgroupfileset> allows for multiple zip
- files to be merged into the archive. In addition, <jar> also has
- another new attribute: filesetmanifest. The existing manifest
- attribute of <jar> now also accepts the name of a jar added through
- a fileset.
-
-* gzip now checks that the zipfile is older than the source file
- before rebuilding the zipfile.
-
-* TarFileset takes in three new attributes - fullpath, prefix
- and preserveLeadingSlashes.
-
-* <move> attempts to rename the directory, if everything inside it is
- included, before performing file-by-file moves. This attempt will
- be done only if filtering is off and if mappers are not used. This
- is a performance improvement and there is no change otherwise in
- the funtionality of this task.
-
-* Exec task has extra attribute "resultproperty" to get the return code
- into a property.
-
-* Exec task prints a message when a timed-out process is killed.
-
-* Added optional attributes - name, arch and version to the <os> task.
-
-* Unjar, Untar, Unwar and Unzip now support patternsets to
- select files from an archive for extraction. Filesets may be
- used to select archived files for unarchival.
-
-* Javac task allows debug levels to be specified. Debug levels
- will have an effect only when the modern compiler or the
- classic compiler (version 1.2 and higher) is used and debugging
- is enabled.
-
-* Added support for specifying CVS_RSH in the <cvs/> task
-
-* The attributes zipfile, jarfile, warfile and earfile (from the Zip,
- Jar, War and Ear tasks) have been deprecated and superseded by a
- new attribute "destfile".
-
-* Added new conditions <isset>, <checksum>, <http>, <socket>, <contains>,
- <filesmatch>.
-
-* <taskdef> and <typedef> will now emit a warning if a task/type of
- the given name already exists.
-
-* A new revision of VAJ tasks: The most important new feature
- is the ability to execute VAJ tasks from the command line by
- exploiting the Remote Tool Access feature of VAJ.
-
-* Improved support for Novell NetWare.
-
-* Added an optional encoding attribute to <fixcrlf>.
-
-* <apply> has a new attribute relative that allows users to pass the
- filenames as relative instead of absolute paths on the command line.
-
-* References can now be copied into the child build by <ant> and
- <antcall> using nested <reference> elements or the new inheritRefs
- attribute.
-
-* <fail> now supports builds to fail based on conditions via if and
- unless attributes.
-
-* Ant now comes with two new BuildLogger implementations - one that
- can send emails containing a log of the build process (MailLogger),
- and one that colorizes the output based on message levels, using
- ANSI color code escape sequences (AnsiColorLogger).
-
-* A "package" mapper type has been added to allow package directory
- names replaced with the dotted form.
-
-* You can now specify environment variables in the <java> and <junit> tasks
- if the fork attribute has been set to true.
-
-* -propertyfile command-line option has been added to load an entire
- property file just as -D properties are declared (as user properties).
- -D properties take precedence over -propertyfile specified ones.
-
-* You can now set an ANT_ARGS environment variable to hold arguments you
- always want passed to the 'ant' command -- for example, if you always
- want to use a different logger or the -find flag.
-
-* <tstamp> now supports a new "prefix" attribute to prefix properties set.
-
-* You can now specify the -sourcepath for <javac> explicitly.
-
-* <javac> now supports a new "listfiles" attribute to list the source
- files it's handing off to the compiler.
-
-* The compiler implementation for <javac> can now be chosen on a task by
- task basis. The new "compiler" attribute of <javac> can be used to override
- the value of the build.compiler property, if set.
-
-* <javac> has a new nested element, <compilerarg>, which allows you
- to specify additional args for the specific compiler you're using.
-
-* <javac>'s "source" attribute is now enabled for jikes as well.
-
-* <propertyfile>'s <entry> now has a 'unit' attribute to specify the
- increment/decrement unit on date operations.
-
-* <property> now supports a 'prefix' attribute when loading from a file
- or resource.
-
-* In Ant 1.4, a feature has been added to the <junit> task that would
- add ant.jar, optional.jar and junit.jar implicitly to the classpath -
- this feature can now be disabled by setting the new includeantruntime
- attribute to false.
-
-* <style> behaves differently from any other directory-based task, as it
- processes all files that it finds in included directories in
- addition to the files matched by your patterns. There is now a new
- attribute, 'scanincludeddirectories', to suppress this behavior.
-
-* <javadoc> now supports a <tag> nested element to provide the -tag option
- to the standard Java 1.4 doclet. The element is ignored when not running
- on Java 1.4.
-
-* <ftp> can now chmod files on a remote server that supports
- "site chmod", as well as set the umask before transferring files, if
- the server supports "site umask".
-
-* New <serverdeploy> "optional" task.
-
-* <patternset> now supports nested patternsets.
-
-* Perforce tasks now support a "failonerror" attribute (defaults to "true").
-
-* Open Source application server JOnAS support:
- EJB hot deploy and deploy with <serverdeploy> and <ejbjar>
-
-* Added new DirSet (<dirset>) datatype.
-
-* <path> now supports nested <dirset> and <filelist> elements.
-
-* <pathconvert> now supports nested <dirset> and <filelist> elements.
-
-* <pathconvert>'s "dirsep" and "pathsep" attributes now accept
- multi-character values.
-
-* <copy> task now has a 'failonerror' attribute to allow keep-going
- behaviour when the file to be copied is not found (defaults to "true").
-
-* <uptodate> now has a 'srcfile' attribute to allow specifying a
- full-path filename.
-
-* <exec>, <sql> and <java> now support append attributes to allow
- appending the output to an existing file.
-
-* <java> now supports a timeout attribute analog to <exec> - it is
- highly recommended to only use it together with fork="true".
-
-* <javadoc> now supports a source attribute to enable javadoc to
- handle assertions present in JDK 1.4 source code.
-
-* <replace> supports a new replacefilterfile attribute that
- automatically turns all properties of a given file into
- replacefilters.
-
-* An alias of <xslt> has been added to refer to the <style> task.
-
-* The compiler implementation for <rmic> can now be chosen on a task by
- task basis. The new "compiler" attribute of <rmic> can be used to override
- the value of the build.rmic property, if set.
-
-* <rmic> has a new nested element, <compilerarg>, which allows you
- to specify additional args for the specific compiler you're using.
-
-* org.apache.tools.ant.XmlLogger now is a BuildLogger, rather than just
- a BuildListener. It can operate in either mode successfully.
-
-* <junit> has a new attribute "showoutput". If set to true, output
- generated by tests will be sent to Ant's logging system as well as
- to the formatters (instead of sending it to the formatters
- exclusively).
-
-* Ant has now a pluggable way to prompt users for input, which is used
- by the new <input> task. IDE integrators can provide an
- implementation of the InputHandler interface to decouple Ant's input
- from the console. An implementation that gets its input from a file
- for unattended builds is part of Ant's distribution.
-
- For more details see docs/manual/inputhandler.html.
-
-* <patch> has a new attribute that selects the directory in which to
- run the command.
-
-* <javadoc> now supports two new nested elements, <fileset> and <packageset>.
-
-
-Changes from Ant 1.4 to Ant 1.4.1
-===========================================
-
-Fixed bugs:
------------
-
-* <ant>'s antfile attribute will now also be considered an absolute path on
- Windows systems, if it starts with a \ and no drive specifier.
-
-* The fullpath attribute of <zipfileset> has been ignored if you used
- the src attribute at the same time.
-
-* The manifest file is now always placed as the second entry (after /META-INF)
- in generated jars. This allows the manifest to be read by JarInputStreams
-
-* Fixed bug in depend task which would fail with a NullPointerException if no
- dependency cache was specified.
-
-* sql task now handles REM statements correctly so that lines starying with rem
- but which are not comments are actually processed.
-
-* XMLLogger now uses the task's name rather than the classname
-
-* <mapper>s will now work as expected if the to pattern expands to an
- absolute pathname.
-
-* <javac> didn't ignore memory settings in non-fork mode
-
-* <cab> didn't split the options attribute into several command line
- arguments correctly.
-
-Other changes:
---------------
-
-* New source attribute for <javac> to enable assertion in JDK 1.4
-
-* XmlLogger and <antstructure> now add an encoding declaration to the
- XML files they generate.
-
-* <fileset> has a new attribute "casesensitive" to make it match
- filenames in a case insensitive way (if you set it to false) - by
- default filesets remain case sensitive.
-
-Changes from Ant 1.3 to Ant 1.4
-===========================================
-
-Changes that could break older environments:
---------------------------------------------
-* JUnitReport now uses the xalan redirect extension for multi-output.
- With Xalan 1.2.2 it forces the use of bsf.jar in the classpath.
- (Available in the xalan distribution). It is recommended to switch
- to Xalan 2.x that do not need it.
-
-* Zip.setWhenempty() has changed its signature.
-
-* <rmic> is now implemented using a factory. This makes extending
- rmic to use a new compiler a lot easier but may break custom
- versions of this task that rely on the old implementation.
-
-* several Zip methods have changed their signature as we now use a Zip
- package of our own that handles Unix permissions for directories.
- Furthermore <zip> will now use the platform's default character
- encoding for filenames - this is consistent with the command line
- ZIP tools, but causes problems if you try to open them from within
- Java and your filenames contain non US-ASCII characters. Use the new
- encoding attribute of the task and set it to UTF8 to get the old
- behavior.
-
-* The <pvcs> task has been moved to a package of its own.
-
-* JUnitResultFormater has two additional methods that must be
- implemented by custom formatters.
-
-* Ant will no longer use the canonical version of a path internally -
- this may yield different results on filesystems that support
- symbolic links.
-
-* The output generated by the xml formatter for <junit> has changed
- again, it doesn't format the numeric value in the time attribute anymore.
-
-* Pattern matching rules have changes slightly, the pattern foo*
- doesn't match files contained in a directory named foo - use foo/*
- instead.
-
-* <fixcrlf> will not remove trailing whitespace at the end of lines anymore.
-
-* The Classloader usage has been changed for the taskdef, property, available
- and sql tasks so that it delegates to the parent classloader. This may cause
- ClassNotFoundExceptions to be thrown if a system class attempts to load a
- class in the taskdef's classpath (typically factory objects).
-
-* Ant now allows multithreading of tasks and the containment of tasks within
- other tasks. This can break customer listeners which do not expect messages
- from a task before the previous task has finished.
-
-* Ant now installs its own ouput stream into System.out to route output to the
- task currently executing on the current thread. This also means that all
- output is now routed as Ant message events. Customer listeners and loggers
- should not call System.out at any time. This has always been true but such
- usage now will cause problems due to possible recursion.
-
-* Invalid manifest files will now cause build failures in the <jar> task.
-
-* Ant Introspection now looks for methods with method names starting with
- addConfigured. When called these methods are passed an argument after it has
- been configured from the build file. Custom tasks supporting nested elements
- starting with the name configured will no longer function.
-
-* The environment variable JAVACMD that can be used to specify the
- java executable to Ant's wrapper scripts must not contain additional
- command line parameters any longer - please use the environment
- variable ANT_OPTS for such parameters now.
-
-* Ant's wrapper scripts now quote the CLASSPATH environment variable, thus
- supporting classpaths which refer to directories containing spaces. This means
- that the CLASSPATH environment variable cannot have quotes. Any quotes should
- be removed. This will not affect the operation of the CLASSPATH environment
- variable in other contexts.
-
-* A delete task like
- <delete includeEmptyFilesets="true">
- <fileset dir="somedir" />
- </delete>
- will now remove "somedir" as well, unless there are still files left
- in it (matched by the default excludes).
-
-* The copy task will now fail if the file to be copied is not found.
-
-* Ant properties defined in properties files now behave the same way as
- properties defined in the build file. In particular the $ character needs
- to be escaped in property values by doubling it to $$. So, to define a
- property with the value $hello, you need to define it in a properties file
- as
- test.prop=$$hello
- This was not the case in Ant 1.3
-
-Other changes:
---------------
-
-* New tasks: ear, p4counter, record, cvspass, vsscheckin, vsscheckout,
- typedef, sleep, mimemail, set of tasks for Continuus/Synergy, dependset,
- condition, maudit, mmetrics, jpcoverage, jpcovreport, jpcovmerge
-
-* Ant now uses JAXP 1.1
-
-* rmic now supports Kaffe's and Weblogic's version of rmic.
-
-* new magic property build.rmic to chose the rmic implementation
-
-* <tar> will now add empty directories as well
-
-* you can now specify a description for <p4change>
-
-* <touch> can now work on <fileset>s
-
-* <uptodate> now supports a value attribute
-
-* <fail> supports nested text
-
-* <fixcrlf> won't override files that are already in the correct
- format.
-
-* <sql> now supports REM comments as well as // and --
-
-* <jar> now has a nested <metainf> element following the same idea as
- <war>'s <webinf>.
-
-* <pvcs> can now handle multiple projects.
-
-* <available> now has a "type" attribute you can use in conjunction
- with the "file" attribute to specify whether the "file" you're
- looking for is a file or a directory.
-
-* New <junit> formatter named "brief"
-
-* <ejbjar> changes
- * Add support for Borland Application Server to the <ejbjar> task using
- a <borland> nested element.
- * Add support for iPlanet Application Server to the <ejbjar> task. Also
- includes some iPlanet utility tasks
- * Add support for JBoss Application Server to the <ejbjar> task.
- * Add a naming attribute to control the naming scheme that
- ejbjar uses to name the generated EJB jars.
- * Weblogic element now sets the compiler class for EJB 2.0 beans
- * <dtd> elements can be specified at the <ejbjar> level for building generic
- beans
- * <dtd> elements can now be URLs
- * Allow the manifest to be specified for the generated jars
- * The weblogic element now supprts an attribte noEJBC to skip the processing
- of the jar by ejbc. The ejbc step will then occur at deployment
- * weblogic will tell ejbc to use Jikes compiler if build.compiler is set to
- jikes. It can be restored to the default, javac, operation if desired.
-
-* Allow the <sql> Delimiter to be set in the so that Oracle stored procs may be
- entered
-
-* <execon> and <apply> can now optionally skip empty filesets.
-
-* <javadoc> has a new useexternalfile attribute that makes it use a
- temporary file for sourcefile and package names - helps to defeat
- command line length limitations.
-
-* Data types like <path> can now be defined inside of <target>s
-
-* you can now specify a classpath for <style> - the XSLZ processor
- will be loaded from this path
-
-* added a force attribute to <style> to support dependencies that the
- task cannot determine itself (dependency on parameters, not file
- modification times for example)
-
-* added vmlauncher attribute to exec tasks. This defaults to true. If
- it is set to false, the VM's ability to launch commands in bypassed
- and the OS shell, either directly or through the auxillary antRun
- scripts is used.
-
-* regexp mapper now supports the java.util.regex package of JDK 1.4.
-
-* New filesonly attribute for <zip> and friends to suppress directory
- entries.
-
-* New update attribute for <zip> and friends - update an existing
- archive instead of creating a new one.
-
-* <apply> and <execon> have been merged into a single task.
-
-* added vssver.scc to the default excludes
-
-* <available> has a new filepath attribute/nested element that allows
- you top search for a file in a given path.
-
-* <junit> can now optionally set a property on test failure.
-
-* <taskdef> can now define several tasks at once, reading the
- name/classname pairs from a property file or resource.
-
-* <unzip/unjar/unwar> and <untar> now have an overwrite attribute that
- defaults to true. If set to false, files that are newer than the
- files in the archive will not be replaced.
-
-* <patternset> and <fileset> now support nested <in/excludesfile>
- elements - using these you can have more than one in/excludes file
- per <patternset>.
-
-* Three new supported compilers for javac: kjc for kopi, gcj for the
- gcc frontend and sj for Symantec's compiler.
- In addition extJavac or the new fork attribute can be
- used to run the JDK's javac in a JVM separate from Ant.
-
-* <fixrlf> can now with CR only line-ends and can use an arbitraty
- between 2 and 80.
-
-* The .NET tasks have been adapted to the beta2 release of the framework.
-
-* <move> will now try to rename() files before copying them byte by
- byte - only if filtering is of, of course.
-
-* <ant> and <antcall> tasks now support a new attribute inheritAll. When set to
- false, only user properties are passed through to the target Ant instance.
- This includes properties set on the command line and properties explicitly
- passed
-
-* <javadoc> now skips off line links if the package list cannot be found.
-
-* <wlrun> now allows the security policy file to exist outside the weblogic
- directory.
-
-* <java> task will set the Thread contextClassLoader under JDKs 1.2+ to the
- classloader for the class being executed.
-
-* Introduce the concept of a TaskContainer - a task or element which can contain
- Ant Tasks.
-
-* Add new tasks implementing the TaskContainer interface <parallel> and
- <sequential> which allow parallel execution of tasks to be specified.
-
-* <depend> task will now take into account dependencies on jar files and class
- files from a given classpath.
-
-* <jar> manifest entries may now be specified in the build file either
- completely or to be merged with a manifest file.
-
-* <tstamp> task custom formats now support locales.
-
-* Added a listner which will forward events to Log4J. The log4j configuration
- file should be in the directory from which Ant is run or passed as a system
- property using a JVM argument.
-
-* Introduced the concept of <filtersets> to allow for more control in which
- filters get applied in a <copy> or <move> operation.
-
-* Added nowarn attribute to javac and deprecated the Jikes-magic property
- build.compiler.warnings.
-
-* The <depend> task cache format has changed and all dependency information is
- now stored in a single file.
-
-Fixed bugs:
------------
-
-* Testcases have been made independent of current working directory.
-
-* Input ZIP-Files will be closed when using a <zipfileset>.
-
-* p4 tasks now don't fail if user, port or client have been omitted
- (and this is acceptable for the context of the command).
-
-* <javah>'s outputfile attribute will be resolved as relative to the
- projects basedir.
-
-* <antstructure> should create a valid DTD for propertyfile.operation.entry
- and omit tasks it fails to load.
-
-* won't try to pass a -bootclasspath flag to javac 1.1 anymore
-
-* <style>'s style attribute no handles absolute paths correctly.
-
-* <delete includeemptydirs="true"> now deletes more than just the leaf
- directories.
-
-* You can now specify a <fileset> for a directory that doesn't exist at
- declaration time but will created before the fileset gets used for the
- first time.
-
-* If the quiet attribute has been set, <delete> will handle <fileset>s
- with non-existing directories gracefully.
-
-* Output written by testcases will now be captured by the <junit> task
- and passed to the formatters.
-
-* Quote the -group parameter to Javadoc as per the specification
-
-* Initialise classes when loaded through the AntClassLoader - that is, run
- static initializers
-
-* Implement getResource() and getResources() in AntClassLoader
-
-* Create the <ejbjar> weblogic command line as a set of arguments rather than
- as a single line. Avoids problems with paths which contain spaces.
-
-* <ejbjar> now fails when the weblogic ejbc compiler reports an error.
-
-* Make the AntClassLoader load resources in the same order as it currently
- loads classes.
-
-* Handle classpaths with spaces
-
-* Make sure XSLT processors close their output files in <style>.
-
-* perform proper uptodate check in <rmic> when compiling for IIOP.
-
-* <jjtree>'s uptodate test works even if outputdirectory is not the
- parent dir of target
-
-* <copy> will remove target file (if it exists) before writing to it -
- this avoids problems with links on filesystems that support them.
-
-* <ftp> now properly recurses remote directories.
-
-* <ftp> closes remote connection when it's done.
-
-* <junit> tries to include all necessary classes for the task itself
- to the classpath when running in fork mode - doesn't work for JDK 1.1
-
-* <apply> and <execon> do now execute the command only once, if you
- specify the parallel attribute - instead of once per fileset.
-
-* directory based tasks and fileset could miss some included files in
- directories that have been excluded
-
-* <fixcrlf> failed for large files.
-
-* <move> removed files you tried to move to themselves.
-
-* <sql> task will not trty to print the result set unless the query succeeded.
-
-* Ant classloader will now ignore paths which are invalid relative to the
- project base
-
-* <ejbjar> weblogic elements check for jar file changes has been fixed.
- Previously some changes would not be included.
-
-* properties loaded from properties files are now resolved internally. This
- removes the spurious warnings about usage of properties which have not been
- set.
-
-* <jar> task and friends now process the JAR manifest to ensure it is valid.
-
-* The task finished event now includes any exception thrown by the task.
-
-* <java> task now supports a jvmVersion attribute so that if another JVM is
- being used, Ant can determine which options to use for features such as the
- VM memory limits
-
-
-Changes from Ant 1.2 to Ant 1.3
-===========================================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Ant doesn't search for the buildfile anymore, unless you use the new
- -find argument.
-
-* <perforce> has been replaced by a number of new tasks.
-
-* <javac> is now implemented using a factory. This makes extending
- javac to use a new compiler a lot easier but may break custom
- versions of this task that rely on the old implementation.
-
-* The output generated by the xml formatter for <junit> has changed a
- little, it doesn't append " sec" in the time attribute anymore.
-
-Other changes:
---------------
-
-* A GUI Frontend: Antidote. This is currently in development. At this
- time, this is not part of the Ant release, although the source is
- included if you are interested.
-
-* New tasks: stylebook, propertyfile, depend, antlr, telnet, csc,
- ilasm, apply, javah, several clearcase tasks, junitreport, sound
-
-* Added output attribute to <java>.
-
-* Added nested zipfileset element to <zip>
-
-* Changed <sql> so that printing is at the task level rather than
- the statement level.
-
-* javadoc task will pass -d flag to any doclet if the destDir attribute is
- given. If the doclet does not accept the -d flag then omit the destdir
- attribute.
-
-* <cab> can work on non-Windows platforms with the help of libcabinet.
- See http://trill.cis.fordham.edu/~barbacha/cabinet_library/.
-
-* <ftp> now supports passive mode.
-
-* New <mapper> data type that can be used to get influence on the
- target files for some tasks like <copy> or enable new types of tasks
- like <apply>.
-
-* <execon> provides more control over the command line now, the names
- of the source files are no longer required to be at the end of the
- command.
-
-* Style tasks will now support TraX compliant XSL processors if one is present
- in your classpath.
-
-* Added a failonerror to the javac task. If set to false, the build will
- continue even if there are compilation errors.
-
-* Added nested format elements to the tstamp task allowing additional time
- formats to be defined for arbitrary properties.
-
-* Added classpath attribute and nested classpath element to <property>
- to make the resource attribute more powerful.
-
-* ${} property expansion will now be performed on the patterns read
- from files specified as includesfile or excludesfile attributes.
-
-* The <tar> and <untar> tasks now support GNU format for handling paths
- which are greater than 100 characters in length. In addition the <tar>
- task now supports nested filesets through which the file permissions
- may be controlled.
-
-* wlrun, wlstop and ejbjar now support Weblogic 6.0
-
-* The MPasre task has been updated to work with MParse 2.0
-
-* The documentation has been significantly updated.
-
-
-Fixed bugs:
------------
-
-* <signjar> doesn't use deprectated methods anymore.
-
-* javadoc's failonerror attribute works again
-
-* javadoc's additionalparam attribute will now be split into separate
- parameters (on spaces) to allow for more than one parameter.
-
-* Changed <sql> task so that printing result sets works on Oracle
-
-* Changes to ddcreator and ejbc helper to respect the descriptor hierarchy
- keppgenerated in ejbc can now be turned off
-
-* ejbjar now correctly ignores <ejb-ref> elements in the deployment descriptor.
- CMP files are included by parsing the weblogic deployment descriptor rather
- than relying on the naming convention used in ant 1.2
-
-* ejbjar includes super classes and super interfaces into the generated ejb
- jar files. The <support> nested element allows support classes to be
- included in the EJB jar. The toplink element should now correctly locate
- the toplink descriptor.
-
-* <vssget> now correctly deals with spaces in arguments
-
-* <jar> fails early if a given manifest file doesn't exist
-
-* <rmic> doesn't search for the _Skel file anymore when stubversion is
- set to 1.2.
-
-* <rmic> uses the the same classpath to verify a class can be rmic'd
- as it passes to the compiler.
-
-* org.apache.tools.mail.MailMessage (and therefore <mail>) can now
- handle SMTP servers sending multi line responses.
-
-* nested <classpath> elements of <taskdef> now work for <taskdef>s not
- nested into <target> as well.
-
-* <property> and <available> will search for the resource "foo" instead
- of "/org/apache/tools/ant/taskdefs/foo" when given a relative resource
- name foo.
-
-* Handle build files in directories whose name contained a "#" character
-
-* <junit> can now log to files whose name contains a comma as well.
-
-* The AntClassLoader now refers to the loader which loaded it, any
- requests it does not handle itself. Previously these went to the
- primordial loader.
-
-Changes from Ant 1.1 to Ant 1.2
-===============================
-
-Changes that could break older environments:
---------------------------------------------
-
-* Semantics of <property> has changed again in the hope to be more
-intuitive. ${} expansion now happens at runtime and <property> tags
-living inside of targets only take effect if they are visited at
-runtime.
-
-As a side effect of this change, task's attributes get set at runtime
-not at parser time as well, which might change the results of
-<script>s or other custom tasks that reference other tasks by their id
-attribute.
-
-* copying of support files in <javac> has been removed - as well as
-the filtering attribute.
-
-* the <expand> and <keysubst> tasks have been removed.
-
-* the ignore and items attributes of directory based tasks have been removed.
-
-* the command line switches _not_ starting with - have been removed.
-
-* Path and EnumeratedAttribute have been moved from
-org.apache.tools.ant to org.apache.tools.ant.types.
-
-* the class attributes of <available>, <java>, <rmic> and <taskdef>
-have been removed.
-
-* the src attribute of <chmod> has been removed.
-
-* <patch> and <javadoc> have lost some of their attributes.
-
-* <java> and <cvs> have lost some undocumented attributes.
-
-* the Unix antRun script would search for command.sh in the directory
-it changed to and invoke this instead of command if present. This
-behavior has been dropped.
-
-* <ejbjar> task syntax has been changed significantly
-
-* <exec> is no longer implemented by org.apache.tool.ant.taskdefs.Exec.
-Custom tasks that rely on Project.createTask("exec") to return an
-instance of this class are going to fail.
-
-* nested <include> and <exclude> elements expect the value of their
-name attribute to be a single pattern, they don't accept multiple
-patterns anymore. Split them into multiple elements of the same type.
-
-* <delete dir="somedir" /> will now delete the directory itself as
-well as all included files. If you just want to clean out the
-directory and keep the empty one, use a nested fileset.
-
-Other changes:
---------------
-
-* New tasks: antstructure, cab, execon, fail, ftp, genkey, jlink,
-junit, sql, javacc, jjtree, starteam, war, unwar, uptodate,
-native2ascii, copy, move, mparse.
-
-* copydir, copyfile, deltree and rename are now deprecated. They
-should be replaced with the new copy, delete and move tasks.
-
-* <java> uses a ClassLoader of its own in no-fork mode if a classpath is
-specified.
-
-* <style> will create the necessary target directories and reprocess
-all files if the stylesheet changes.
-
-* New data types fileset and patternset - expected to get a broader use.
-They, as well as PATH like structures, can now be defined on a global
-level and later be referenced by their id attribute.
-
-* You can specify environment variables to <exec>.
-
-* <get> can check whether a remote file is actually newer than a local
-copy before it starts a download (HTTP only).
-
-* Added a -logger option to allow the class which performs logging to be
-specified on the command line.
-
-* Added a -emacs option to tell the logger to leave out taskname adornments
-on log output.
-
-* <chmod> works on all files in parallel and supports multiple filesets.
-
-* <replace> can now use tokens and/or values that cross line boundaries.
-
-* build.compiler supports now jvc as well.
-
-* project specific help can now be obtained with the -projecthelp option.
-
-* Added a -debug option to make -verbose less verbose (and more useful)
-
-* Ant will now search for a file named build.xml in the parent directory
-and above (towards the root of the filesystem) if you didn't specify
--buildfile and there is no build.xml in the current directory.
-
-* <echo> can now write to a file and accepts nested text.
-
-Fixed bugs:
------------
-
-* <chmod> didn't work when used as a directory based task.
-
-* Path, Available, Property didn't resolve relative filenames with
-respect to the Project's basedir.
-
-* Project didn't interpret the basedir attribute correctly in all
-cases.
-
-* Nested <src> in <javac> caused NullPointerException.
-
-* Corrupt Zip- and Jar-files ar now deleted if the task fails.
-
-* many more fixes we've forgotten to document here ...
-
-* The packagelistloc attribute of <javadoc>'s <link> child will be
- resolved as a file (i.e. it is either absolute or relative to
- basedir).
+++ /dev/null
-
-The AspectJ tree builds using Ant 1.6.3.
-(No longer is a special version of Ant required.)
-
-To run tests using the junit task, junit.jar is added to lib/.
-
-This directory contains:
-
-o The contents of the binary distribution of Ant 1.6.3,
- not including the docs directory.
-
-o ant-src.zip, .java extracted from the source distribution of Ant 1.6.3.
-
-For Ant, see http://ant.apache.org.
+++ /dev/null
-#! /bin/sh
-
-# Copyright 2001-2005 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Extract launch and ant arguments, (see details below).
-ant_exec_args=
-no_config=false
-use_jikes_default=false
-ant_exec_debug=false
-show_help=false
-for arg in "$@" ; do
- if [ "$arg" = "--noconfig" ] ; then
- no_config=true
- elif [ "$arg" = "--usejikes" ] ; then
- use_jikes_default=true
- elif [ "$arg" = "--execdebug" ] ; then
- ant_exec_debug=true
- elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then
- show_help=true
- ant_exec_args="$ant_exec_args -h"
- else
- if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then
- show_help=true
- fi
- ant_exec_args="$ant_exec_args \"$arg\""
- fi
-done
-
-# Source/default ant configuration
-if $no_config ; then
- rpm_mode=false
- usejikes=$use_jikes_default
-else
- # load system-wide ant configuration
- if [ -f "/etc/ant.conf" ] ; then
- . /etc/ant.conf
- fi
-
- # load user ant configuration
- if [ -f "$HOME/.ant/ant.conf" ] ; then
- . $HOME/.ant/ant.conf
- fi
- if [ -f "$HOME/.antrc" ] ; then
- . "$HOME/.antrc"
- fi
-
- # provide default configuration values
- if [ -z "$rpm_mode" ] ; then
- rpm_mode=false
- fi
- if [ -z "$usejikes" ] ; then
- usejikes=$use_jikes_default
- fi
-fi
-
-# Setup Java environment in rpm mode
-if $rpm_mode ; then
- if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
- set_jvm
- set_javacmd
- fi
-fi
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- Darwin*) darwin=true
- if [ -z "$JAVA_HOME" ] ; then
- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
- fi
- ;;
-esac
-
-if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
- ## resolve links - $0 may be a link to ant's home
- PRG="$0"
- progname=`basename "$0"`
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- ANT_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- ANT_HOME=`cd "$ANT_HOME" && pwd`
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$ANT_HOME" ] &&
- ANT_HOME=`cygpath --unix "$ANT_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# set ANT_LIB location
-ANT_LIB="${ANT_HOME}/lib"
-
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- else
- JAVACMD=`which java 2> /dev/null `
- if [ -z "$JAVACMD" ] ; then
- JAVACMD=java
- fi
- fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly."
- echo " We cannot execute $JAVACMD"
- exit 1
-fi
-
-# Build local classpath using just the launcher in non-rpm mode or
-# use the Jpackage helper in rpm mode with basic and default jars
-# specified in the ant.conf configuration. Because the launcher is
-# used, libraries linked in ANT_HOME will also be include, but this
-# is discouraged as it is not java-version safe. A user should
-# request optional jars and their dependencies via the OPT_JAR_LIST
-# variable
-if $rpm_mode && [ -f /usr/bin/build-classpath ] ; then
- LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
- # If the user requested to try to add some other jars to the classpath
- if [ -n "$OPT_JAR_LIST" ] ; then
- _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
- if [ -n "$_OPTCLASSPATH" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
- fi
- fi
-
- # Explicitly add javac path to classpath, assume JAVA_HOME set
- # properly in rpm mode
- if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
- fi
- if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
- fi
-
- # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
- # user CLASSPATH first and ant-found jars after.
- # In that case, the user CLASSPATH will override ant-found jars
- #
- # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
- # with ant-found jars first and user CLASSPATH after
- if [ -n "$CLASSPATH" ] ; then
- # merge local and specified classpath
- if [ -z "$LOCALCLASSPATH" ] ; then
- LOCALCLASSPATH="$CLASSPATH"
- elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
- LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
- else
- LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
- fi
-
- # remove class path from launcher -cp option
- CLASSPATH=""
- fi
-else
- # not using rpm_mode; use launcher to determine classpaths
- if [ -z "$LOCALCLASSPATH" ] ; then
- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
- else
- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
- fi
-fi
-
-if [ -n "$JAVA_HOME" ] ; then
- # OSX hack to make Ant work with jikes
- if $darwin ; then
- OSXHACK="${JAVA_HOME}/../Classes"
- if [ -d "${OSXHACK}" ] ; then
- for i in "${OSXHACK}"/*.jar
- do
- JIKESPATH="$JIKESPATH:$i"
- done
- fi
- fi
-fi
-
-# Allow Jikes support (off by default)
-if $usejikes; then
- ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
-fi
-
-# For Cygwin, switch paths to appropriate format before running java
-# For PATHs convert to unix format first, then to windows format to ensure
-# both formats are supported. Probably this will fail on directories with ;
-# in the name in the path. Let's assume that paths containing ; are more
-# rare than windows style paths on cygwin.
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
- format=mixed
- else
- format=windows
- fi
- ANT_HOME=`cygpath --$format "$ANT_HOME"`
- ANT_LIB=`cygpath --$format "$ANT_LIB"`
- JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
- LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
- LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
- if [ -n "$CLASSPATH" ] ; then
- CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
- CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
- fi
- CYGHOME=`cygpath --$format "$HOME"`
-fi
-
-# Show script help if requested
-if $show_help ; then
- echo $0 '[script options] [options] [target [target2 [target3] ..]]'
- echo 'Script Options:'
- echo ' --help, --h print this message and ant help'
- echo ' --noconfig suppress sourcing of /etc/ant.conf,'
- echo ' $HOME/.ant/ant.conf, and $HOME/.antrc'
- echo ' configuration files'
- echo ' --usejikes enable use of jikes by default, unless'
- echo ' set explicitly in configuration files'
- echo ' --execdebug print ant exec line generated by this'
- echo ' launch script'
- echo ' '
-fi
-# add a second backslash to variables terminated by a backslash under cygwin
-if $cygwin; then
- case "$ANT_HOME" in
- *\\ )
- ANT_HOME="$ANT_HOME\\"
- ;;
- esac
- case "$CYGHOME" in
- *\\ )
- CYGHOME="$CYGHOME\\"
- ;;
- esac
- case "$JIKESPATH" in
- *\\ )
- JIKESPATH="$JIKESPATH\\"
- ;;
- esac
- case "$LOCALCLASSPATH" in
- *\\ )
- LOCALCLASSPATH="$LOCALCLASSPATH\\"
- ;;
- esac
- case "$CLASSPATH" in
- *\\ )
- CLASSPATH="$CLASSPATH\\"
- ;;
- esac
-fi
-# Execute ant using eval/exec to preserve spaces in paths,
-# java options, and ant args
-ant_sys_opts=
-if [ -n "$CYGHOME" ]; then
- if [ -n "$JIKESPATH" ]; then
- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
- else
- ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
- fi
-else
- if [ -n "$JIKESPATH" ]; then
- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
- fi
-fi
-ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
-if $ant_exec_debug ; then
- echo $ant_exec_command
-fi
-eval $ant_exec_command
+++ /dev/null
-@echo off\r
-\r
-REM Copyright 2001,2004-2005 The Apache Software Foundation\r
-REM\r
-REM Licensed under the Apache License, Version 2.0 (the "License");\r
-REM you may not use this file except in compliance with the License.\r
-REM You may obtain a copy of the License at\r
-REM\r
-REM http://www.apache.org/licenses/LICENSE-2.0\r
-REM\r
-REM Unless required by applicable law or agreed to in writing, software\r
-REM distributed under the License is distributed on an "AS IS" BASIS,\r
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-REM See the License for the specific language governing permissions and\r
-REM limitations under the License.\r
-\r
-if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"\r
-\r
-if "%OS%"=="Windows_NT" @setlocal\r
-if "%OS%"=="WINNT" @setlocal\r
-\r
-rem %~dp0 is expanded pathname of the current script under NT\r
-set DEFAULT_ANT_HOME=%~dp0..\r
-\r
-if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%\r
-set DEFAULT_ANT_HOME=\r
-\r
-set _USE_CLASSPATH=yes\r
-\r
-rem Slurp the command line arguments. This loop allows for an unlimited number\r
-rem of arguments (up to the command line limit, anyway).\r
-set ANT_CMD_LINE_ARGS=%1\r
-if ""%1""=="""" goto doneStart\r
-shift\r
-:setupArgs\r
-if ""%1""=="""" goto doneStart\r
-if ""%1""==""-noclasspath"" goto clearclasspath\r
-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1\r
-shift\r
-goto setupArgs\r
-\r
-rem here is there is a -noclasspath in the options\r
-:clearclasspath\r
-set _USE_CLASSPATH=no\r
-shift\r
-goto setupArgs\r
-\r
-rem This label provides a place for the argument list loop to break out\r
-rem and for NT handling to skip to.\r
-\r
-:doneStart\r
-rem find ANT_HOME if it does not exist due to either an invalid value passed\r
-rem by the user or the %0 problem on Windows 9x\r
-if exist "%ANT_HOME%\lib\ant.jar" goto checkJava\r
-\r
-rem check for ant in Program Files\r
-if not exist "%ProgramFiles%\ant" goto checkSystemDrive\r
-set ANT_HOME=%ProgramFiles%\ant\r
-goto checkJava\r
-\r
-:checkSystemDrive\r
-rem check for ant in root directory of system drive\r
-if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive\r
-set ANT_HOME=%SystemDrive%\ant\r
-goto checkJava\r
-\r
-:checkCDrive\r
-rem check for ant in C:\ant for Win9X users\r
-if not exist C:\ant\lib\ant.jar goto noAntHome\r
-set ANT_HOME=C:\ant\r
-goto checkJava\r
-\r
-:noAntHome\r
-echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.\r
-goto end\r
-\r
-:checkJava\r
-set _JAVACMD=%JAVACMD%\r
-\r
-if "%JAVA_HOME%" == "" goto noJavaHome\r
-if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome\r
-if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe\r
-goto checkJikes\r
-\r
-:noJavaHome\r
-if "%_JAVACMD%" == "" set _JAVACMD=java.exe\r
-\r
-:checkJikes\r
-if not "%JIKESPATH%"=="" goto runAntWithJikes\r
-\r
-:runAnt\r
-if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath\r
-if not "%CLASSPATH%"=="" goto runAntWithClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
-goto end\r
-\r
-:runAntNoClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
-goto end\r
-\r
-:runAntWithClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
-goto end\r
-\r
-:runAntWithJikes\r
-if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath\r
-if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath\r
-\r
-:runAntWithJikesNoClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
-goto end\r
-\r
-:runAntWithJikesAndClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
-goto end\r
-\r
-:end\r
-set _JAVACMD=\r
-set ANT_CMD_LINE_ARGS=\r
-\r
-if "%OS%"=="Windows_NT" @endlocal\r
-if "%OS%"=="WINNT" @endlocal\r
-\r
-:mainEnd\r
-if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"\r
-\r
+++ /dev/null
-/*
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- Run ant
-*/
-
-'@echo off'
-parse arg mode envarg '::' antarg
-
-if mode\='.' & mode\='..' & mode\='/' then do
- envarg = mode envarg
- mode = ''
-end
-
-if antarg = '' then do
- antarg = envarg
- envarg = ''
-end
-
-x = setlocal()
-
-env="OS2ENVIRONMENT"
-antenv = _getenv_('antenv')
-if _testenv_() = 0 then interpret 'call "' || antenv || '"' '"' || envarg || '"'
-
-if mode = '' then mode = _getenv_('ANT_MODE' '..')
-if mode \= '/' then do
- runrc = _getenv_('runrc')
- antrc = _getenv_('antrc' 'antrc.cmd')
- if mode = '..' then mode = '-r'
- else mode = ''
- interpret 'call "' || runrc || '"' antrc '"' || mode || '"'
-end
-
-if _testenv_() = 0 then do
- say 'Ant environment is not set properly'
- x = endlocal()
- exit 16
-end
-
-settings = '-Dant.home=' || ANT_HOME '-Djava.home=' || JAVA_HOME
-
-java = _getenv_('javacmd' 'java')
-opts = value('ANT_OPTS',,env)
-args = value('ANT_ARGS',,env)
-lcp = value('LOCALCLASSPATH',,env)
-cp = value('CLASSPATH',,env)
-if value('ANT_USE_CP',,env) \= '' then do
- if lcp \= '' & right(lcp, 1) \= ';' then lcp = lcp || ';'
- lcp = lcp || cp
- 'SET CLASSPATH='
-end
-if lcp\='' then lcp = '-classpath' lcp
-
-cmd = java opts lcp '-jar' ANT_HOME ||'\lib\ant-launcher.jar' settings args antarg
-launcher = stream(ANT_HOME ||'\lib\ant-launcher.jar', 'C', 'query exists')
-if launcher = '' then entry = 'org.apache.tools.ant.Main'
-else entry = 'org.apache.tools.ant.launch.Launcher'
-java opts lcp entry settings args antarg
-
-x = endlocal()
-
-return rc
-
-_testenv_: procedure expose env ANT_HOME JAVA_HOME
-ANT_HOME = value('ANT_HOME',,env)
-if ANT_HOME = '' then return 0
-JAVA_HOME = value('JAVA_HOME',,env)
-if JAVA_HOME = '' then return 0
-cp = translate(value('CLASSPATH',,env))
-if pos(translate(ANT_HOME), cp) = 0 then return 0
-if pos(translate(JAVA_HOME), cp) = 0 then return 0
-return 1
-
-_getenv_: procedure expose env
-parse arg envar default
-if default = '' then default = envar
-var = value(translate(envar),,env)
-if var = '' then var = default
-return var
+++ /dev/null
-#!/bin/sh
-
-#
-# Copyright 2001-2002,2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-# Args: DIR command
-cd "$1"
-CMD="$2"
-shift
-shift
-
-exec "$CMD" "$@"
+++ /dev/null
-@echo off\r
-\r
-REM\r
-REM Copyright 2001-2002,2004-2005 The Apache Software Foundation\r
-REM\r
-REM Licensed under the Apache License, Version 2.0 (the "License");\r
-REM you may not use this file except in compliance with the License.\r
-REM You may obtain a copy of the License at\r
-REM\r
-REM http://www.apache.org/licenses/LICENSE-2.0\r
-REM\r
-REM Unless required by applicable law or agreed to in writing, software\r
-REM distributed under the License is distributed on an "AS IS" BASIS,\r
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-REM See the License for the specific language governing permissions and\r
-REM limitations under the License.\r
-REM\r
-REM\r
-\r
-if "%OS%"=="Windows_NT" @setlocal\r
-if "%OS%"=="WINNT" @setlocal\r
-\r
-if ""%1""=="""" goto runCommand\r
-\r
-rem Change drive and directory to %1\r
-if "%OS%"=="Windows_NT" cd /d ""%1""\r
-if not "%OS%"=="Windows_NT" cd ""%1""\r
-shift\r
-\r
-rem Slurp the command line arguments. This loop allows for an unlimited number\r
-rem of agruments (up to the command line limit, anyway).\r
-set ANT_RUN_CMD=%1\r
-if ""%1""=="""" goto runCommand\r
-shift\r
-:loop\r
-if ""%1""=="""" goto runCommand\r
-set ANT_RUN_CMD=%ANT_RUN_CMD% %1\r
-shift\r
-goto loop\r
-\r
-:runCommand\r
-rem echo %ANT_RUN_CMD%\r
-%ANT_RUN_CMD%\r
-\r
-if "%OS%"=="Windows_NT" @endlocal\r
-if "%OS%"=="WINNT" @endlocal\r
-\r
+++ /dev/null
-#!/usr/bin/perl
-#
-# Copyright 2001,2003-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#######################################################################
-#
-# antRun.pl
-#
-# wrapper script for invoking commands on a platform with Perl installed
-# this is akin to antRun.bat, and antRun the SH script
-#
-# created: 2001-10-18
-# author: Jeff Tulley jtulley@novell.com
-#######################################################################
-#be fussy about variables
-use strict;
-
-#turn warnings on during dev; generates a few spurious uninitialised var access warnings
-#use warnings;
-
-#and set $debug to 1 to turn on trace info (currently unused)
-my $debug=1;
-
-#######################################################################
-# change drive and directory to "%1"
-my $ANT_RUN_CMD = @ARGV[0];
-
-# assign current run command to "%2"
-chdir (@ARGV[0]) || die "Can't cd to $ARGV[0]: $!\n";
-if ($^O eq "NetWare") {
- # There is a bug in Perl 5 on NetWare, where chdir does not
- # do anything. On NetWare, the following path-prefixed form should
- # always work. (afaict)
- $ANT_RUN_CMD .= "/".@ARGV[1];
-}
-else {
- $ANT_RUN_CMD = @ARGV[1];
-}
-
-# dispose of the first two arguments, leaving only the command's args.
-shift;
-shift;
-
-# run the command
-my $returnValue = system $ANT_RUN_CMD, @ARGV;
-if ($returnValue eq 0) {
- exit 0;
-}
-else {
- # only 0 and 1 are widely recognized as exit values
- # so change the exit value to 1
- exit 1;
-}
+++ /dev/null
-/*
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- Ant environment
-*/
-
-'@echo off'
-call RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs"
-call SysLoadFuncs
-
-/* Prepare the parameters for later use */
-parse arg argv
-mode = ''
-args = ''
-opts = ''
-cp = ''
-lcp = ''
-
-do i = 1 to words(argv)
- param = word(argv, i)
- select
- when param='-lcp' then mode = 'l'
- when param='-cp' | param='-classpath' then mode = 'c'
- when abbrev('-opts', param, 4) then mode = 'o'
- when abbrev('-args', param, 4) then mode = 'a'
- otherwise
- select
- when mode = 'a' then args = space(args param, 1)
- when mode = 'c' then cp = space(cp param, 1)
- when mode = 'l' then lcp = space(lcp param, 1)
- when mode = 'o' then opts = space(opts param, 1)
- otherwise
- say 'Option' param 'ignored'
- end
- end
-end
-
-env="OS2ENVIRONMENT"
-antconf = _getenv_('antconf' 'antconf.cmd')
-runrc = _getenv_('runrc')
-interpret 'call "' || runrc || '"' '"' || antconf || '"' 'ETC'
-ANT_HOME = value('ANT_HOME',,env)
-JAVA_HOME = value('JAVA_HOME',,env)
-classpath = value('CLASSPATH',,env)
-classes = stream(JAVA_HOME || "\lib\classes.zip", "C", "QUERY EXISTS")
-if classes \= '' then classpath = prepend(classpath classes)
-classes = stream(JAVA_HOME || "\lib\tools.jar", "C", "QUERY EXISTS")
-if classes \= '' then classpath = prepend(classpath classes)
-
-classpath = prepend(classpath ANT_HOME || '\lib\ant-launcher.jar')
-'SET CLASSPATH=' || classpath
-
-/* Setting classpathes, options and arguments */
-envset = _getenv_('envset')
-if cp\='' then interpret 'call "' || envset || '"' '"; CLASSPATH"' '"' || cp || '"'
-if lcp\='' then interpret 'call "' || envset || '"' '"; LOCALCLASSPATH"' '"' || lcp || '"'
-if opts\='' then interpret 'call "' || envset || '"' '"-D ANT_OPTS"' '"' || opts || '"'
-if args\='' then interpret 'call "' || envset || '"' '"ANT_ARGS"' '"' || args || '"'
-
-exit 0
-
-addpath: procedure
-parse arg path elem
-if elem = '' then do
- if path\='' & right(path, 1)\=';' then path = path || ';'
- return path
-end
-if substr(path, length(path)) = ';' then glue = ''
-else glue = ';'
-if pos(translate(elem), translate(path)) = 0 then path = path || glue || elem || ';'
-return path
-
-prepend: procedure
-parse arg path elem
-if elem = '' then do
- if path\='' & right(path, 1)\=';' then path = path || ';'
- return path
-end
-if pos(translate(elem), translate(path)) = 0 then path = elem || ';' || path
-return path
-
-_getenv_: procedure expose env
-parse arg envar default
-if default = '' then default = envar
-var = value(translate(envar),,env)
-if var = '' then var = default
-return var
+++ /dev/null
-#!/usr/bin/perl
-#
-# Copyright 2001,2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# A script to allow Bash or Z-Shell to complete an Ant command-line.
-#
-# To install for Bash 2.0 or better, add the following to ~/.bashrc:
-#
-# $ complete -C complete-ant-cmd ant build.sh
-#
-# To install for Z-Shell 2.5 or better, add the following to ~/.zshrc:
-#
-# function ant_complete () {
-# local args_line args
-# read -l args_line
-# set -A args $args_line
-# set -A reply $(COMP_LINE=$args_line complete-ant-cmd ${args[1]} $1)
-# }
-# compctl -K ant_complete ant build.sh
-#
-# @author Mike Williams <mikew@cortexebusiness.com.au>
-
-my $cmdLine = $ENV{'COMP_LINE'};
-my $antCmd = $ARGV[0];
-my $word = $ARGV[1];
-
-my @completions;
-if ($word =~ /^-/) {
- list( restrict( $word, getArguments() ));
-} elsif ($cmdLine =~ /-(f|buildfile)\s+\S*$/) {
- list( getBuildFiles($word) );
-} else {
- list( restrict( $word, getTargets() ));
-}
-
-exit(0);
-
-sub list {
- for (@_) {
- print "$_\n";
- }
-}
-
-sub restrict {
- my ($word, @completions) = @_;
- grep( /^\Q$word\E/, @completions );
-}
-
-sub getArguments {
- qw(-buildfile -debug -emacs -f -find -help -listener -logfile
- -logger -projecthelp -quiet -verbose -version);
-}
-
-
-sub getBuildFiles {
- my ($word) = @_;
- grep( /\.xml$/, glob( "$word*" ));
-}
-
-sub getTargets {
-
- # Look for build-file
- my $buildFile = 'build.xml';
- if ($cmdLine =~ /-(f|buildfile)\s+(\S+)/) {
- $buildFile = $2;
- }
- return () unless (-f $buildFile);
-
- # Run "ant -projecthelp" to list targets. Keep a cache of results in a
- # cache-file.
- my $cacheFile = $buildFile;
- $cacheFile =~ s|(.*/)?(.*)|${1}.ant-targets-${2}|;
- if ((!-e $cacheFile) || (-M $buildFile) < (-M $cacheFile)) {
- open( CACHE, '>'.$cacheFile ) || die "can\'t write $cacheFile: $!\n";
- open( HELP, "$antCmd -projecthelp -f '$buildFile'|" ) || return();
- my %targets;
- while( <HELP> ) {
- if (/^\s+(\S+)/) {
- $targets{$1}++;
- }
- }
- my @targets = sort keys %targets;
- for (@targets) { print CACHE "$_\n"; }
- return @targets;
- }
-
- # Read the target-cache
- open( CACHE, $cacheFile ) || die "can\'t read $cacheFile: $!\n";
- my @targets;
- while (<CACHE>) {
- chop;
- s/\r$//; # for Cygwin
- push( @targets, $_ );
- }
- close( CACHE );
- @targets;
-
-}
-
-
-
+++ /dev/null
-/*
-
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-SET environment variables
-First optional parameter:
- ; parameters are considered parts of a path variable, semicolons are
- appended to each element if not already present
- -D parameters are properties for Java or Makefile etc., -D will be
- prepended and the parameters will be separated by a space
- =D the same as above but equal sign is not required
- , parameters should be comma separated in the environment variable
- - parameters should be separated by the next parameter
- Other values mean that the first parameter is missing and the environment
- variable will be set to the space separated parameters
-
-Second parameter: name of the environment variable
-
-Next parameters: values
-; implies that the equal sign is considered a part of the parameter and is
-not interpreted
-
--D requires parameters in the form name=value. If the equal sign is not found,
-the parameters are changed to name=expanded_name
-
-Other options have optional equal sign. If it is found, only the part after
-the equal sign will be oprionally expanded.
-
-If the parameter is the minus sign, the next parameter will not be expanded.
-If the parameter is a single dot, it will be replaced with the value of the
-environment variable as it existed before envset was invoked.
-
-For other parameters the batch looks for the environment variable with the
-same name (in uppercase). If it is found, it forms the expanded_name. If
-the environment variable with such a name does not exist, the expanded_name
-will hold the parameter name without case conversion.
-*/
-
-parse arg mode envar args
-
-equal = 0
-sep = ' '
-
-/* Parse command line parameters */
-select
- when mode='-' then do
- sep = envar
- parse var args envar args
- end
- when mode=';' then do
- sep = ''
- equal = -1
- end
- when mode='-D' then equal = 1
- when mode='=D' then mode = '-D'
- when mode=',' then sep = ','
-otherwise
- args = envar args
- envar = mode
- mode = ''
-end
-
-env = 'OS2ENVIRONMENT'
-envar = translate(envar)
-orig = value(envar,,env)
-newval = ''
-expand = 1
-
-/* for each parameter... */
-do i = 1 to words(args)
- if expand > 0 & word(args, i) = '-' then expand = 0
- else call addval word(args, i)
-end
-
-/* Optionally enclose path variable by quotes */
-if mode = ';' & pos(' ', newval) > 0 then newval = '"' || newval || '"'
-
-/* Set the new value, 'SET' cannot be used since it does not allow '=' */
-x = value(envar, newval, env)
-exit 0
-
-addval: procedure expose sep equal orig expand newval mode env
-parse arg var
-
-if var = '.' then expvar = orig
-else do
- if equal >= 0 then do
- parse var var name '=' val
- if val = '' then var = name
- else var = val
- end
- if expand = 0 then expvar = var
- else expvar = value(translate(var),,env)
- if expvar = '' then expvar = var
- if equal >= 0 then do
- if val = '' then do
- parse var expvar key '=' val
- if val <> '' then name = key
- else do
- if equal > 0 then val = key
- else name = key
- end
- end
- else val = expvar
- if pos(' ', val) > 0 | pos('=', val) > 0 then val = '"' || val || '"'
- if val = '' then expvar = name
- else expvar = name || '=' || val
- end
- if mode = '-D' then expvar = '-D' || expvar
- if mode = ';' then do
- if right(expvar, 1) <> ';' then expvar = expvar || ';'
- end
-end
-
-if newval = '' then newval = expvar
-else newval = newval || sep || expvar
-expand = 1
-return
+++ /dev/null
-REM\r
-REM Copyright 2001-2004 The Apache Software Foundation\r
-REM\r
-REM Licensed under the Apache License, Version 2.0 (the "License");\r
-REM you may not use this file except in compliance with the License.\r
-REM You may obtain a copy of the License at\r
-REM\r
-REM http://www.apache.org/licenses/LICENSE-2.0\r
-REM\r
-REM Unless required by applicable law or agreed to in writing, software\r
-REM distributed under the License is distributed on an "AS IS" BASIS,\r
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-REM See the License for the specific language governing permissions and\r
-REM limitations under the License.\r
-REM\r
-REM\r
-\r
-set _CLASSPATHCOMPONENT=%1\r
-if ""%1""=="""" goto gotAllArgs\r
-shift\r
-\r
-:argCheck\r
-if ""%1""=="""" goto gotAllArgs\r
-set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1\r
-shift\r
-goto argCheck\r
-\r
-:gotAllArgs\r
-set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH%\r
-\r
+++ /dev/null
-#!/usr/bin/perl
-#
-# Copyright 2000-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#######################################################################
-#
-# runant.pl
-#
-# wrapper script for invoking ant in a platform with Perl installed
-# this may include cgi-bin invocation, which is considered somewhat daft.
-# (slo: that should be a separate file which can be derived from this
-# and returns the XML formatted output)
-#
-# the code is not totally portable due to classpath and directory splitting
-# issues. oops. (NB, use File::Spec::Functions will help and the code is
-# structured for the catfile() call, but because of perl version funnies
-# the code is not included.
-#
-# created: 2000-8-24
-# author: Steve Loughran steve_l@sourceforge.net
-#######################################################################
-#
-# Assumptions:
-#
-# - the "java" executable/script is on the command path
-# - ANT_HOME has been set
-# - target platform uses ":" as classpath separator or perl indicates it is dos/win32
-# - target platform uses "/" as directory separator.
-
-#be fussy about variables
-use strict;
-
-#platform specifics (disabled)
-#use File::Spec::Functions;
-
-#turn warnings on during dev; generates a few spurious uninitialised var access warnings
-#use warnings;
-
-#and set $debug to 1 to turn on trace info
-my $debug=1;
-
-#######################################################################
-#
-# check to make sure environment is setup
-#
-
-my $HOME = $ENV{ANT_HOME};
-if ($HOME eq "")
- {
- die "\n\nANT_HOME *MUST* be set!\n\n";
- }
-
-my $JAVACMD = $ENV{JAVACMD};
-$JAVACMD = "java" if $JAVACMD eq "";
-
-my $onnetware = 0;
-if ($^O eq "NetWare")
-{
- $onnetware = 1;
-}
-
-my $oncygwin = ($^O eq "cygwin");
-
-#ISSUE: what java wants to split up classpath varies from platform to platform
-#and perl is not too hot at hinting which box it is on.
-#here I assume ":" 'cept on win32, dos, and netware. Add extra tests here as needed.
-my $s=":";
-if(($^O eq "MSWin32") || ($^O eq "dos") || ($^O eq "cygwin") ||
- ($onnetware == 1))
- {
- $s=";";
- }
-
-#build up standard classpath
-my $localpath = "$HOME/lib/ant-launcher.jar";
-#set JVM options and Ant arguments, if any
-my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
-my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
-
-#jikes
-if($ENV{JIKESPATH} ne "")
- {
- push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
- }
-
-#construct arguments to java
-my @ARGS;
-push @ARGS, @ANT_OPTS;
-
-my $CYGHOME = "";
-
-my $classpath=$ENV{CLASSPATH};
-if ($oncygwin == 1) {
- $localpath = `cygpath --path --windows $localpath`;
- chomp ($localpath);
- if (! $classpath eq "")
- {
- $classpath = `cygpath --path --windows "$classpath"`;
- chomp ($classpath);
- }
- $HOME = `cygpath --path --windows $HOME`;
- chomp ($HOME);
- $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
- chomp ($CYGHOME);
-}
-push @ARGS, "-classpath", "$localpath";
-push @ARGS, "-Dant.home=$HOME";
-if ( ! $CYGHOME eq "" )
-{
- push @ARGS, "-Dcygwin.user.home=\"$CYGHOME\""
-}
-push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
-push @ARGS, @ARGV;
-if (! $classpath eq "")
-{
- if ($onnetware == 1)
- {
- # make classpath literally $CLASSPATH
- # this is to avoid pushing us over the 512 character limit
- # even skip the ; - that is already in $localpath
- push @ARGS, "-lib", "\$CLASSPATH";
- }
- else
- {
- push @ARGS, "-lib", "$classpath";
- }
-}
-print "\n $JAVACMD @ARGS\n\n" if ($debug);
-
-my $returnValue = system $JAVACMD, @ARGS;
-if ($returnValue eq 0)
- {
- exit 0;
- }
-else
- {
- # only 0 and 1 are widely recognized as exit values
- # so change the exit value to 1
- exit 1;
- }
+++ /dev/null
-#!/usr/bin/python
-# Copyright 2001,2003-2004 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-"""
-
- runant.py
-
- This script is a translation of the runant.pl written by Steve Loughran.
- It runs ant with/out arguments, it should be quite portable (thanks to
- the python os library)
- This script has been tested with Python2.0/Win2K
-
- created: 2001-04-11
- author: Pierre Dittgen pierre.dittgen@criltelecom.com
-
- Assumptions:
-
- - the "java" executable/script is on the command path
-"""
-import os, os.path, string, sys
-
-# Change it to 1 to get extra debug information
-debug = 0
-
-#######################################################################
-
-# If ANT_HOME is not set default to script's parent directory
-if os.environ.has_key('ANT_HOME'):
- ANT_HOME = os.environ['ANT_HOME']
-else:
- ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
-
-# set ANT_LIB location
-ANT_LIB = os.path.join(ANT_HOME, 'lib')
-
-# set JAVACMD (check variables JAVACMD and JAVA_HOME)
-JAVACMD = None
-if not os.environ.has_key('JAVACMD'):
- if os.environ.has_key('JAVA_HOME'):
- if not os.path.exists(os.environ['JAVA_HOME']):
- print "Warning: JAVA_HOME is not defined correctly."
- else:
- JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
- else:
- print "Warning: JAVA_HOME not set."
-else:
- JAVACMD = os.environ['JAVACMD']
-if not JAVACMD:
- JAVACMD = 'java'
-
-launcher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
-if not os.path.exists(launcher_jar):
- print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
- ANT_LIB
-
-# Build up standard classpath (LOCALCLASSPATH)
-LOCALCLASSPATH = launcher_jar
-if os.environ.has_key('LOCALCLASSPATH'):
- LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
-
-ANT_OPTS = ""
-if os.environ.has_key('ANT_OPTS'):
- ANT_OPTS = os.environ['ANT_OPTS']
-
-OPTS = ""
-if os.environ.has_key('JIKESPATH'):
- OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
-
-ANT_ARGS = ""
-if os.environ.has_key('ANT_ARGS'):
- ANT_ARGS = os.environ['ANT_ARGS']
-
-CLASSPATH = ""
-if os.environ.has_key('CLASSPATH'):
- CLASSPATH = os.environ['CLASSPATH']
-
-# Builds the commandline
-cmdline = ('%s %s -classpath %s -Dant.home=%s %s ' + \
- 'org.apache.tools.ant.launch.Launcher %s -lib %s %s') \
- % (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
- CLASSPATH, string.join(sys.argv[1:], ' '))
-
-if debug:
- print '\n%s\n\n' % (cmdline)
-
-# Run the biniou!
-os.system(cmdline)
+++ /dev/null
-/*
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- Run RC file, name is in the first arg, second arg is either PATH
- ENV or -r or nothing
-*/
-
-parse arg name path rest
-
-if name = '' then do
- say 'RC file name is missing'
- exit 1
-end
-
-if rest \= '' then do
- say 'Too many parameters'
- exit 1
-end
-
-call runit name path
-exit 0
-
-runit: procedure
-parse arg name path dir
-
-if path \= '' & path \= '-r' then do
- dir = value(translate(path),,'OS2ENVIRONMENT')
- if dir = '' then return
- dir = translate(dir, '\', '/') /* change UNIX-like path to OS/2 */
-end
-
-if dir = '' then dir = directory()
-
-if path = '-r' then do /* recursive call */
- subdir = filespec('path', dir)
- if subdir \= '\' then do
- subdir = left(subdir, length(subdir)-1)
- call runit name path filespec('drive', dir) || subdir
- end
-end
-
-/* Look for the file and run it */
-if right(dir, 1) \= '\' then dir = dir || '\'
-rcfile = stream(dir || name, 'c', 'query exists')
-if rcfile \= '' then interpret 'call "' || rcfile || '"'
-
-return
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<xsl:stylesheet
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
- version='1.0'>
-
-<!--
- Copyright 2002,2004-2005 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
- <xsl:param name="title"/>
- <xsl:param name="module"/>
- <xsl:param name="cvsweb"/>
-
- <xsl:output method="html" indent="yes" encoding="US-ASCII"
- doctype-public="-//W3C//DTD HTML 4.01//EN"
- doctype-system="http://www.w3.org/TR/html401/strict.dtd"/>
-
- <!-- Copy standard document elements. Elements that
- should be ignored must be filtered by apply-templates
- tags. -->
- <xsl:template match="*">
- <xsl:copy>
- <xsl:copy-of select="attribute::*[. != '']"/>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="changelog">
- <html>
- <head>
- <title><xsl:value-of select="$title"/></title>
- <style type="text/css">
- body, p {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 80%;
- color: #000000;
- background-color: #ffffff;
- }
- tr, td {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- background: #eeeee0;
- }
- td {
- padding-left: 20px;
- }
- .dateAndAuthor {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: bold;
- text-align: left;
- background: #a6caf0;
- padding-left: 3px;
- }
- a {
- color: #000000;
- }
- pre {
- font-weight: bold;
- }
- </style>
- </head>
- <body>
- <h1>
- <a name="top"><xsl:value-of select="$title"/></a>
- </h1>
- <p style="text-align: right">Designed for use with <a href="http://ant.apache.org/">Apache Ant</a>.</p>
- <hr/>
- <table border="0" width="100%" cellspacing="1">
-
- <xsl:apply-templates select=".//entry">
- <xsl:sort select="date" data-type="text" order="descending"/>
- <xsl:sort select="time" data-type="text" order="descending"/>
- </xsl:apply-templates>
-
- </table>
-
- </body>
- </html>
- </xsl:template>
-
- <xsl:template match="entry">
- <tr>
- <td class="dateAndAuthor">
- <xsl:value-of select="date"/><xsl:text> </xsl:text><xsl:value-of select="time"/><xsl:text> </xsl:text><xsl:value-of select="author"/>
- </td>
- </tr>
- <tr>
- <td>
- <pre>
-<xsl:apply-templates select="msg"/></pre>
- <ul>
- <xsl:apply-templates select="file"/>
- </ul>
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="date">
- <i><xsl:value-of select="."/></i>
- </xsl:template>
-
- <xsl:template match="time">
- <i><xsl:value-of select="."/></i>
- </xsl:template>
-
- <xsl:template match="author">
- <i>
- <a>
- <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
- <xsl:value-of select="."/></a>
- </i>
- </xsl:template>
-
- <xsl:template match="file">
- <li>
- <a>
- <xsl:choose>
- <xsl:when test="string-length(prevrevision) = 0 ">
- <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/></xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="name" /> (<xsl:value-of select="revision"/>)</a>
- </li>
- </xsl:template>
-
- <!-- Any elements within a msg are processed,
- so that we can preserve HTML tags. -->
- <xsl:template match="msg">
- <xsl:apply-templates/>
- </xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- extension-element-prefixes="redirect">
-
-<!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
- <xsl:output method="html" indent="yes" encoding="US-ASCII"/>
- <xsl:decimal-format decimal-separator="." grouping-separator="," />
-
- <xsl:param name="output.dir" select="'.'"/>
- <xsl:param name="basedir" select="'.'"/>
-
- <xsl:template match="checkstyle">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-summary.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="overview"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all files -->
- <xsl:apply-templates select="file[count(error) != 0]"/>
- </xsl:template>
-
- <xsl:template name="index.html">
- <html>
- <head>
- <title>CheckStyle Audit</title>
- </head>
- <frameset cols="20%,80%">
- <frame src="allclasses-frame.html" name="fileListFrame"/>
- <frame src="overview-frame.html" name="fileFrame"/>
- </frameset>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature.
- If you see this message, you are using a non-frame-capable web client.
- </p>
- </noframes>
- </html>
- </xsl:template>
-
- <xsl:template name="pageHeader">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="text-align:right"><h2>CheckStyle Audit</h2></td>
- </tr>
- <tr>
- <td class="text-align:right">Designed for use with
- <a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
- <a href='http://ant.apache.org/'>Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
- </xsl:template>
-
- <xsl:template match="checkstyle" mode="overview">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <!-- page header -->
- <xsl:call-template name="pageHeader"/>
-
- <!-- Summary part -->
- <xsl:apply-templates select="." mode="summary"/>
- <hr size="1" width="100%" align="left"/>
-
- <!-- File list part -->
- <xsl:apply-templates select="." mode="filelist"/>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template name="stylesheet.css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin-left: 10;
- margin-right: 10;
- font:normal 80% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- .oddrow td {
- background: #efefef;
- }
- .evenrow td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- font-weight:bold;
- background: #ccc;
- color: black;
- }
- table, th, td {
- font-size:100%;
- border: none
- }
- table.log tr td, tr th {
-
- }
- h2 {
- font-weight:bold;
- font-size:140%;
- margin-bottom: 5;
- }
- h3 {
- font-size:100%;
- font-weight:bold;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
- </xsl:template>
-
- <!--
- Creates an all-classes.html file that contains a link to all files.
- -->
- <xsl:template match="checkstyle" mode="all.classes">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <h2>Files</h2>
- <p>
- <table width="100%">
- <!-- For each file create its part -->
- <xsl:apply-templates select="file[count(error) != 0]" mode="all.classes">
- <xsl:sort select="substring-after(@name, $basedir)"/>
- </xsl:apply-templates>
- </table>
- </p>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template match="checkstyle" mode="filelist">
- <h3>Files</h3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <th>Name</th>
- <th>Errors</th>
- </tr>
- <xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
- <xsl:sort select="count(error)" order="descending" data-type="number"/>
- </xsl:apply-templates>
- </table>
- </xsl:template>
-
- <xsl:template match="file" mode="filelist">
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td nowrap="nowrap">
- <a>
- <xsl:attribute name="href">
- <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="substring-after(@name, $basedir)"/>
- </a>
- </td>
- <td><xsl:value-of select="count(error)"/></td>
- </tr>
- </xsl:template>
-
- <xsl:template match="file" mode="all.classes">
- <tr>
- <td nowrap="nowrap">
- <a target="fileFrame">
- <xsl:attribute name="href">
- <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="substring-after(@name, $basedir)"/>
- </a>
- </td>
- </tr>
- </xsl:template>
-
- <!--
- transform string like a/b/c to ../../../
- @param path the path to transform into a descending directory path
- -->
- <xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'/')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'/')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'/')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="file">
- <redirect:write file="{$output.dir}/files/{substring-after(@name, $basedir)}.html">
- <html>
- <head>
- <link rel="stylesheet" type="text/css">
- <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="substring-after(@name, $basedir)"/></xsl:call-template><xsl:text>stylesheet.css</xsl:text></xsl:attribute>
- </link>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <h3>File <xsl:value-of select="substring-after(@name, $basedir)"/></h3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <th>Error Description</th>
- <th>Line:Column</th>
- </tr>
- <xsl:for-each select="error">
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
- <td align="center"><xsl:value-of select="@line"/><xsl:if test="@column">:<xsl:value-of select="@column"/></xsl:if></td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
- </redirect:write>
- </xsl:template>
-
- <xsl:template match="checkstyle" mode="summary">
- <h3>Summary</h3>
- <xsl:variable name="fileCount" select="count(file)"/>
- <xsl:variable name="errorCount" select="count(file/error)"/>
- <xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <th>Total Files</th>
- <th>Files With Errors</th>
- <th>Errors</th>
- </tr>
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td><xsl:value-of select="$fileCount"/></td>
- <td><xsl:value-of select="$fileErrorCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- </tr>
- </table>
- </xsl:template>
-
- <xsl:template name="alternated-row">
- <xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
- <xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
- </xsl:attribute>
- </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!--
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
- <xsl:strip-space elements="checkstyle"/>
- <xsl:preserve-space elements="file"/>
- <xsl:output method="text"/>
- <xsl:template match="checkstyle/file/error">
- <xsl:value-of select="../@name"/>
- <xsl:text>:</xsl:text>
- <xsl:value-of select="@line"/>
- <xsl:text>:</xsl:text>
- <xsl:value-of select="@column"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@message"/>
- </xsl:template>
-</xsl:stylesheet>
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- extension-element-prefixes="redirect">
-
-<!--
- Copyright 2003-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
- <xsl:output method="xml" indent="yes"/>
- <xsl:decimal-format decimal-separator="." grouping-separator="," />
-
- <xsl:param name="output.dir" select="'.'"/>
- <xsl:param name="basedir" select="'.'"/>
-
- <xsl:template match="checkstyle">
- <document>
- <properties>
- <title>Checkstyle Audit</title>
- </properties>
-
- <body>
- <xsl:apply-templates select="." mode="summary"/>
- <!-- File list part -->
- <xsl:apply-templates select="." mode="filelist"/>
- <xsl:apply-templates select="file[count(error) != 0]"/>
- </body>
- </document>
- </xsl:template>
-
- <xsl:template match="checkstyle" mode="filelist">
- <section name="Files">
- <table>
- <tr>
- <th>Name</th>
- <th>Errors</th>
- </tr>
- <xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
- <xsl:sort select="count(error)" order="descending" data-type="number"/>
- </xsl:apply-templates>
- </table>
- </section>
- </xsl:template>
-
- <xsl:template match="file" mode="filelist">
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td nowrap="nowrap">
- <a>
- <xsl:attribute name="href">
- <xsl:text>files</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="substring-after(@name, $basedir)"/>
- </a>
- </td>
- <td><xsl:value-of select="count(error)"/></td>
- </tr>
- </xsl:template>
-
- <xsl:template match="file">
- <redirect:write file="{$output.dir}/files{substring-after(@name, $basedir)}.xml">
- <document>
- <properties>
- <title>Checkstyle Audit</title>
- </properties>
-
- <body>
- <section name="Details for {substring-after(@name, $basedir)}">
- <table>
- <tr>
- <th>Error Description</th>
- <th>Line</th>
- </tr>
- <xsl:for-each select="error">
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
- <td><xsl:value-of select="@line"/></td>
- </tr>
- </xsl:for-each>
- </table>
- </section>
- </body>
- </document>
- </redirect:write>
- </xsl:template>
-
- <xsl:template match="checkstyle" mode="summary">
- <section name="Summary">
- <xsl:variable name="fileCount" select="count(file)"/>
- <xsl:variable name="errorCount" select="count(file/error)"/>
- <xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
- <table>
- <tr>
- <th>Files</th>
- <th>Files With Errors</th>
- <th>Errors</th>
- </tr>
- <tr>
- <xsl:call-template name="alternated-row"/>
- <td><xsl:value-of select="$fileCount"/></td>
- <td><xsl:value-of select="$fileErrorCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- </tr>
- </table>
- </section>
- </xsl:template>
-
- <xsl:template name="alternated-row">
- <xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
- <xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
- </xsl:attribute>
- </xsl:template>
-</xsl:stylesheet>
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--
-
- Sample stylesheet to be used with JProbe 3.0 XML output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- It is best used with JProbe Coverage Ant task that gives you the benefit
- of a reference classpath so that you have the list of classes/methods
- that are not used at all in a given classpath.
-
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
-
--->
-
-<!-- default output directory is current directory -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- ======================================================================
- Root element
- ======================================================================= -->
-<xsl:template match="/snapshot">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all packages -->
- <xsl:apply-templates select="./package" mode="write"/>
-</xsl:template>
-
-<!-- =======================================================================
- Frameset definition. Entry point for the report.
- 3 frames: packageListFrame, classListFrame, classFrame
- ======================================================================= -->
-<xsl:template name="index.html">
-<html>
- <head><title>Coverage Results.</title></head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="overview-frame.html" name="packageListFrame"/>
- <frame src="allclasses-frame.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- </frameset>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </p>
- </noframes>
-</html>
-</xsl:template>
-
-<!-- =======================================================================
- Stylesheet CSS used
- ======================================================================= -->
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin-left: 10;
- margin-right: 10;
- font:normal 80% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- font-weight:bold;
- background: #ccc;
- color: black;
- }
- table, th, td {
- font-size:100%;
- border: none
- }
- table.log tr td, tr th {
-
- }
- h2 {
- font-weight:bold;
- font-size:140%;
- margin-bottom: 5;
- }
- h3 {
- font-size:100%;
- font-weight:bold;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
-</xsl:template>
-
-<!-- =======================================================================
- List of all classes in all packages
- This will be the first page in the classListFrame
- ======================================================================= -->
-<xsl:template match="snapshot" mode="all.classes">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="package/class">
- <xsl:sort select="@name"/>
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
- <xsl:variable name="link">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:variable>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- list of all packages -->
-<xsl:template match="snapshot" mode="all.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:for-each select="package">
- <xsl:sort select="@name" order="ascending"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- overview of statistics in packages -->
-<xsl:template match="snapshot" mode="overview.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body onload="open('allclasses-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <h3>Summary</h3>
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <!--th width="10%" nowrap="nowrap">Date</th>
- <th width="10%" nowrap="nowrap">Elapsed time</th-->
- <th width="10%" nowrap="nowrap">Reported Classes</th>
- <th width="10%" nowrap="nowrap">Methods Hit</th>
- <th width="10%" nowrap="nowrap">Lines Hit</th>
- </tr>
- <tr class="a">
- <!--td nowrap="nowrap"><xsl:value-of select="execution_log/@program_start"/></td>
- <td><xsl:value-of select="format-number(execution_log/@elapsed_time div 1000,'0.0')"/>secs</td-->
- <td><xsl:value-of select="count(package/class)"/></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
- </tr>
- </table>
- <table border="0" width="100%">
- <tr>
- <td style="text-align: justify;">
- To ensure accurate test runs on Java applications, developers need to know how much of
- the code has been tested, and where to find any untested code. Coverage helps you
- locate untested code, and measure precisely how much code has been exercised.
- The result is a higher quality application in a shorter period of time.
- <p/>
- </td>
- </tr>
- </table>
-
- <h3>Packages</h3>
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <xsl:apply-templates select="package[1]" mode="stats.header"/>
- <!-- display packages and sort them via their coverage rate -->
- <xsl:for-each select="package">
- <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{translate(@name,'.','/')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
- </tr>
- </xsl:for-each>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!--
- detailed info for a package. It will output the list of classes
-, the summary page, and the info for each class
--->
-<xsl:template match="package" mode="write">
- <xsl:variable name="package.dir">
- <xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'.','/')"/></xsl:if>
- <xsl:if test="@name = ''">.</xsl:if>
- </xsl:variable>
-
- <!-- create a classes-list.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:apply-templates select="." mode="classes.list"/>
- </redirect:write>
-
- <!-- create a package-summary.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:apply-templates select="." mode="package.summary"/>
- </redirect:write>
-
- <!-- for each class, creates a @name.html -->
- <xsl:for-each select="class">
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </redirect:write>
- </xsl:for-each>
-</xsl:template>
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
- <html>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
- </td>
- </tr>
- </table>
-
- <H2>Classes</H2>
- <TABLE WIDTH="100%">
- <xsl:for-each select="class">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </TABLE>
- </BODY>
- </html>
-</xsl:template>
-
-<!-- summary of a package -->
-<xsl:template match="package" mode="package.summary">
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </HEAD>
- <!-- when loading this package, it will open the classes into the frame -->
- <BODY onload="open('package-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <h3>Package <xsl:value-of select="@name"/></h3>
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <xsl:apply-templates select="." mode="stats.header"/>
- <xsl:apply-templates select="." mode="stats"/>
- </table>
-
- <xsl:if test="count(class) > 0">
- <H3>Classes</H3>
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <xsl:apply-templates select="." mode="stats.header"/>
- <xsl:apply-templates select="class" mode="stats">
- <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
- </xsl:apply-templates>
- </table>
- </xsl:if>
- <xsl:call-template name="pageFooter"/>
- </BODY>
- </HTML>
-</xsl:template>
-
-<!-- details of a class -->
-<xsl:template match="class" mode="class.details">
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <xsl:call-template name="pageHeader"/>
- <H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
- <!-- class summary -->
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <xsl:apply-templates select="." mode="stats.header"/>
- <xsl:apply-templates select="." mode="stats"/>
- </table>
-
- <!-- details of methods -->
- <H3>Methods</H3>
- <table class="log" cellpadding="5" cellspacing="2" width="100%">
- <xsl:apply-templates select="method[1]" mode="stats.header"/>
- <xsl:apply-templates select="method" mode="stats">
- <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
- </xsl:apply-templates>
- </table>
- <xsl:call-template name="pageFooter"/>
- </BODY>
- </HTML>
-
-</xsl:template>
-
-<!-- Page Header -->
-<xsl:template name="pageHeader">
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="bannercell" rowspan="2">
- <a href="http://jakarta.apache.org/">
- <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right"><h2>Source Code Coverage</h2></td>
- </tr>
- <tr>
- <td style="text-align:right">Designed for use with <a href='http://www.sitraka.com/jprobe'>Sitraka JProbe</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td>
- <div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 1999-2001, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
-</xsl:template>
-
-
-<xsl:template name="table.header">
- <tr>
- <th width="80%">Name</th>
- <th width="10%" nowrap="nowrap">Methods Hit</th>
- <th width="10%" nowrap="nowrap">Lines Hit</th>
- </tr>
-</xsl:template>
-
-<xsl:template match="method" mode="stats.header">
- <tr>
- <th width="90%">Name</th>
- <th width="10%" nowrap="nowrap">Lines Hit</th>
- </tr>
-</xsl:template>
-<xsl:template match="method" mode="stats">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="@name"/></td>
- <td>
- <xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/>
- </td>
- </tr>
-</xsl:template>
-
-<xsl:template match="package|class" mode="stats.header">
- <tr>
- <th width="80%">Name</th>
- <th width="10%" nowrap="nowrap">Methods Hit</th>
- <th width="10%" nowrap="nowrap">Lines Hit</th>
- </tr>
-</xsl:template>
-<xsl:template match="package|class" mode="stats">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="@name"/></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
- <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
- </tr>
-</xsl:template>
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-</xsl:stylesheet>
-
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<!--
-
- Sample stylesheet to be used with JDepend XML output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- @author <a href="mailto:jtulley@novell.com">Jeff Tulley</a>
-
- -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<xsl:template match="JDepend">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-packages.html">
- <xsl:apply-templates select="." mode="packages.details"/>
- </redirect:write>
-
- <!-- create the overview-cycles.html at the root -->
- <redirect:write file="{$output.dir}/overview-cycles.html">
- <xsl:apply-templates select="." mode="cycles.details"/>
- </redirect:write>
-
- <!-- create the overview-cycles.html at the root -->
- <redirect:write file="{$output.dir}/overview-explanations.html">
- <xsl:apply-templates select="." mode="explanations"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/all-packages.html">
- <xsl:apply-templates select="Packages" mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-cycles.html at the root -->
- <redirect:write file="{$output.dir}/all-cycles.html">
- <xsl:apply-templates select="Cycles" mode="all.cycles"/>
- </redirect:write>
-</xsl:template>
-
-
-<xsl:template name="index.html">
-<html>
- <head>
- <title>JDepend Analysis</title>
- </head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="all-packages.html" name="packageListFrame"/>
- <frame src="all-cycles.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- </frameset>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </p>
- </noframes>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
- <style type="text/css">
- body {
- font:normal 68% verdana,arial,helvetica;
- color:#000000;
- }
- table tr td, tr th {
- font-size: 68%;
- }
- table.details tr th{
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
- }
- table.details tr td{
- background:#eeeee0;
- }
-
- p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
- margin-left:2em;
- margin-right:2em;
- }
- h1 {
- margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
- }
- h2 {
- margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
- }
- h3 {
- margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
- }
- h4 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h5 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h6 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- .Error {
- font-weight:bold; color:red;
- }
- .Failure {
- font-weight:bold; color:purple;
- }
- .Properties {
- text-align:right;
- }
- </style>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="overview.packages">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <table width="100%"><tr align="left"><h2>Summary</h2><td>
- </td><td align="right">
- [summary]
- [<a href="overview-packages.html">packages</a>]
- [<a href="overview-cycles.html">cycles</a>]
- [<a href="overview-explanations.html">explanations</a>]
- </td></tr></table>
- <table width="100%" class="details">
- <tr>
- <th>Package</th>
- <th>Total Classes</th>
- <th><a href="overview-explanations.html#EXnumber">Abstract Classes</a></th>
- <th><a href="overview-explanations.html#EXnumber">Concrete Classes</a></th>
- <th><a href="overview-explanations.html#EXafferent">Afferent Couplings</a></th>
- <th><a href="overview-explanations.html#EXefferent">Efferent Couplings</a></th>
- <th><a href="overview-explanations.html#EXabstractness">Abstractness</a></th>
- <th><a href="overview-explanations.html#EXinstability">Instability</a></th>
- <th><a href="overview-explanations.html#EXdistance">Distance</a></th>
-
- </tr>
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) = 0">
- <tr>
- <td align="left">
- <a>
- <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/Ca"/></td>
- <td align="right"><xsl:value-of select="Stats/Ce"/></td>
- <td align="right"><xsl:value-of select="Stats/A"/></td>
- <td align="right"><xsl:value-of select="Stats/I"/></td>
- <td align="right"><xsl:value-of select="Stats/D"/></td>
- </tr>
- </xsl:if>
- </xsl:for-each>
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) > 0">
- <tr>
- <td align="left">
- <xsl:value-of select="@name"/>
- </td>
- <td align="left" colspan="8"><xsl:value-of select="error"/></td>
- </tr>
- </xsl:if>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="packages.details">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <table width="100%"><tr align="left"><h2>Packages</h2><td>
- </td><td align="right">
- [<a href="overview-summary.html">summary</a>]
- [packages]
- [<a href="overview-cycles.html">cycles</a>]
- [<a href="overview-explanations.html">explanations</a>]
- </td></tr></table>
-
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) = 0">
- <h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
- <xsl:value-of select="@name"/></a></h3>
-
- <table width="100%"><tr>
- <td><a href="overview-explanations.html#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
- <td><a href="overview-explanations.html#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
- <td><a href="overview-explanations.html#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
- <td><a href="overview-explanations.html#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
- <td><a href="overview-explanations.html#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
- </tr></table>
-
- <table width="100%" class="details">
- <tr>
- <th>Abstract Classes</th>
- <th>Concrete Classes</th>
- <th>Used by Packages</th>
- <th>Uses Packages</th>
- </tr>
- <tr>
- <td valign="top" width="25%">
- <xsl:if test="count(AbstractClasses/Class)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="AbstractClasses/Class">
- <xsl:value-of select="node()"/><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(ConcreteClasses/Class)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="ConcreteClasses/Class">
- <xsl:value-of select="node()"/><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(UsedBy/Package)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="UsedBy/Package">
- <a>
- <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
- <xsl:value-of select="node()"/>
- </a><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(DependsUpon/Package)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="DependsUpon/Package">
- <a>
- <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
- <xsl:value-of select="node()"/>
- </a><br/>
- </xsl:for-each>
- </td>
- </tr>
- </table>
- </xsl:if>
- </xsl:for-each>
- <!-- this is often a long listing; provide a lower navigation table also -->
- <table width="100%"><tr align="left"><td></td><td align="right">
- [<a href="overview-summary.html">summary</a>]
- [packages]
- [<a href="overview-cycles.html">cycles</a>]
- [<a href="overview-explanations.html">explanations</a>]
- </td></tr></table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="cycles.details">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <table width="100%"><tr align="left"><h2>Cycles</h2><td>
- </td><td align="right">
- [<a href="overview-summary.html">summary</a>]
- [<a href="overview-packages.html">packages</a>]
- [cycles]
- [<a href="overview-explanations.html">explanations</a>]
- </td></tr></table>
- <!--<table width="100%"><tr><td>
- </td><td align="right">
- [<a href="#NVsummary">summary</a>]
- [<a href="#NVpackages">packages</a>]
- [<a href="#NVcycles">cycles</a>]
- [<a href="#NVexplanations">explanations</a>]
- </td></tr></table> -->
-
- <xsl:if test="count(Cycles/Package) = 0">
- <p>There are no cyclic dependancies.</p>
- </xsl:if>
- <xsl:for-each select="Cycles/Package">
- <h3><a><xsl:attribute name="name">#CY<xsl:value-of select="@Name"/></xsl:attribute><xsl:value-of select="@Name"/></a></h3><p>
- <xsl:for-each select="Package">
- <xsl:value-of select="."/><br/>
- </xsl:for-each></p>
- </xsl:for-each>
- <!-- this is often a long listing; provide a lower navigation table also -->
- <table width="100%"><tr align="left"><td></td><td align="right">
- [<a href="overview-summary.html">summary</a>]
- [<a href="overview-packages.html">packages</a>]
- [cycles]
- [<a href="overview-explanations.html">explanations</a>]
- </td></tr></table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="explanations">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
-
- <table width="100%"><tr align="left"><h2>Explanations</h2><td>
- </td><td align="right">
- [<a href="overview-summary.html">summary</a>]
- [<a href="overview-packages.html">packages</a>]
- [<a href="overview-cycles.html">cycles</a>]
- [explanations]
- </td></tr></table>
-
- <p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
-
- <h3><a name="EXnumber">Number of Classes</a></h3>
- <p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
- <h3><a name="EXafferent">Afferent Couplings</a></h3>
- <p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
- <h3><a name="EXefferent">Efferent Couplings</a></h3>
- <p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
- <h3><a name="EXabstractness">Abstractness</a></h3>
- <p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
- <p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
- <h3><a name="EXinstability">Instability</a></h3>
- <p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
- <p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
- <h3><a name="EXdistance">Distance</a></h3>
- <p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
- <p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
- <p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
-
- </body>
- </html>
-</xsl:template>
-
-
-<!--
-Creates an html file that contains a link to all package links in overview-packages.html.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Packages" mode="all.packages">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
- [<a href="overview-summary.html" target="classFrame">summary</a>]
- [<a href="overview-packages.html" target="classFrame">packages</a>]
- [<a href="overview-cycles.html" target="classFrame">cycles</a>]
- [<a href="overview-explanations.html" target="classFrame">explanations</a>]
- </td></tr></table>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select="Package[count(error)=0]" mode="all.packages.link">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="Package[count(error) > 0]" mode="all.packages.nolink">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="JDepend/Packages/Package" mode="all.packages.link">
- <tr>
- <td nowrap="nowrap">
- <a href="overview-packages.html#PK{@name}" target="classFrame">
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-<!--
-I do not know JDepend enough to know if every error results in a non-analyzed package,
-but that is how I am presenting it to the viewer. This may need to change.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Packages/Package" mode="all.packages.nolink">
- <tr>
- <td nowrap="nowrap">
- Not Analyzed: <xsl:value-of select="@name"/>
- </td>
- </tr>
-</xsl:template>
-
-<!--
-Creates an html file that contains a link to all package links in overview-cycles.html.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Cycles" mode="all.cycles">
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
- </head>
- <body>
- <table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
- [<a href="overview-summary.html" target="classFrame">summary</a>]
- [<a href="overview-packages.html" target="classFrame">packages</a>]
- [<a href="overview-cycles.html" target="classFrame">cycles</a>]
- [<a href="overview-explanations.html" target="classFrame">explanations</a>]
- </td></tr></table>
- <h2>Cycles</h2>
- <table width="100%">
- <xsl:apply-templates select="Package" mode="all.cycles">
- <xsl:sort select="@Name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="JDepend/Cycles/Package" mode="all.cycles">
- <tr>
- <td nowrap="nowrap">
- <a href="overview-cycles.html#CY{@Name}" target="classFrame"><xsl:value-of select="@Name"/></a>
- </td>
- </tr>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>JDepend Analysis</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!--
- Copyright 2002,2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-
-<xsl:template match="JDepend">
- <html>
- <head>
- <title>JDepend Analysis</title>
-
- <style type="text/css">
- body {
- font:normal 68% verdana,arial,helvetica;
- color:#000000;
- }
- table tr td, tr th {
- font-size: 68%;
- }
- table.details tr th{
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
- }
- table.details tr td{
- background:#eeeee0;
- }
-
- p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
- margin-left:2em;
- margin-right:2em;
- }
- h1 {
- margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
- }
- h2 {
- margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
- }
- h3 {
- margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
- }
- h4 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h5 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h6 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- .Error {
- font-weight:bold; color:red;
- }
- .Failure {
- font-weight:bold; color:purple;
- }
- .Properties {
- text-align:right;
- }
- </style>
-
-
- </head>
- <body>
- <!--h1>JDepend Report</h1>
- <ul>
- <xsl:for-each select="./Packages/Package">
- <xsl:sort select="@name"/>
- <li><xsl:value-of select="@name"/></li>
- </xsl:for-each>
- </ul-->
-
- <h1><a name="top">JDepend Analysis</a></h1>
- <p align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</p>
- <hr size="2" />
-
- <table width="100%"><tr><td>
- <a name="NVsummary"><h2>Summary</h2></a>
- </td><td align="right">
- [<a href="#NVsummary">summary</a>]
- [<a href="#NVpackages">packages</a>]
- [<a href="#NVcycles">cycles</a>]
- [<a href="#NVexplanations">explanations</a>]
- </td></tr></table>
-
- <table width="100%" class="details">
- <tr>
- <th>Package</th>
- <th>Total Classes</th>
- <th><a href="#EXnumber">Abstract Classes</a></th>
- <th><a href="#EXnumber">Concrete Classes</a></th>
- <th><a href="#EXafferent">Afferent Couplings</a></th>
- <th><a href="#EXefferent">Efferent Couplings</a></th>
- <th><a href="#EXabstractness">Abstractness</a></th>
- <th><a href="#EXinstability">Instability</a></th>
- <th><a href="#EXdistance">Distance</a></th>
-
- </tr>
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) = 0">
- <tr>
- <td align="left">
- <a>
- <xsl:attribute name="href">#PK<xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
- <td align="right"><xsl:value-of select="Stats/Ca"/></td>
- <td align="right"><xsl:value-of select="Stats/Ce"/></td>
- <td align="right"><xsl:value-of select="Stats/A"/></td>
- <td align="right"><xsl:value-of select="Stats/I"/></td>
- <td align="right"><xsl:value-of select="Stats/D"/></td>
-
-
- </tr>
- </xsl:if>
- </xsl:for-each>
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) > 0">
- <tr>
- <td align="left">
- <xsl:value-of select="@name"/>
- </td>
- <td align="left" colspan="8"><xsl:value-of select="error"/></td>
- </tr>
- </xsl:if>
- </xsl:for-each>
- </table>
-
- <table width="100%"><tr><td>
- <a name="NVpackages"><h2>Packages</h2></a>
- </td><td align="right">
- [<a href="#NVsummary">summary</a>]
- [<a href="#NVpackages">packages</a>]
- [<a href="#NVcycles">cycles</a>]
- [<a href="#NVexplanations">explanations</a>]
- </td></tr></table>
-
- <xsl:for-each select="./Packages/Package">
- <xsl:if test="count(error) = 0">
- <h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
- <xsl:value-of select="@name"/></a></h3>
-
- <table width="100%"><tr>
- <td><a href="#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
- <td><a href="#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
- <td><a href="#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
- <td><a href="#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
- <td><a href="#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
- </tr></table>
-
- <table width="100%" class="details">
- <tr>
- <th>Abstract Classes</th>
- <th>Concrete Classes</th>
- <th>Used by Packages</th>
- <th>Uses Packages</th>
- </tr>
- <tr>
- <td valign="top" width="25%">
- <xsl:if test="count(AbstractClasses/Class)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="AbstractClasses/Class">
- <xsl:value-of select="node()"/><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(ConcreteClasses/Class)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="ConcreteClasses/Class">
- <xsl:value-of select="node()"/><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(UsedBy/Package)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="UsedBy/Package">
- <a>
- <xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
- <xsl:value-of select="node()"/>
- </a><br/>
- </xsl:for-each>
- </td>
- <td valign="top" width="25%">
- <xsl:if test="count(DependsUpon/Package)=0">
- <i>None</i>
- </xsl:if>
- <xsl:for-each select="DependsUpon/Package">
- <a>
- <xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
- <xsl:value-of select="node()"/>
- </a><br/>
- </xsl:for-each>
- </td>
- </tr>
- </table>
- </xsl:if>
- </xsl:for-each>
-
- <table width="100%"><tr><td>
- <a name="NVcycles"><h2>Cycles</h2></a>
- </td><td align="right">
- [<a href="#NVsummary">summary</a>]
- [<a href="#NVpackages">packages</a>]
- [<a href="#NVcycles">cycles</a>]
- [<a href="#NVexplanations">explanations</a>]
- </td></tr></table>
-
- <xsl:if test="count(Cycles/Package) = 0">
- <p>There are no cyclic dependancies.</p>
- </xsl:if>
- <xsl:for-each select="Cycles/Package">
- <h3><xsl:value-of select="@Name"/></h3><p>
- <xsl:for-each select="Package">
- <xsl:value-of select="."/><br/>
- </xsl:for-each></p>
- </xsl:for-each>
-
- <table width="100%"><tr><td>
- <a name="NVexplanations"><h2>Explanations</h2></a>
- </td><td align="right">
- [<a href="#NVsummary">summary</a>]
- [<a href="#NVpackages">packages</a>]
- [<a href="#NVcycles">cycles</a>]
- [<a href="#NVexplanations">explanations</a>]
- </td></tr></table>
-
- <p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
-
- <h3><a name="EXnumber">Number of Classes</a></h3>
- <p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
- <h3><a name="EXafferent">Afferent Couplings</a></h3>
- <p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
- <h3><a name="EXefferent">Efferent Couplings</a></h3>
- <p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
- <h3><a name="EXabstractness">Abstractness</a></h3>
- <p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
- <p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
- <h3><a name="EXinstability">Instability</a></h3>
- <p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
- <p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
- <h3><a name="EXdistance">Distance</a></h3>
- <p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
- <p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
- <p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
-
- </body>
- </html>
-</xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Ant JUnitReport output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="testsuites">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all packages -->
- <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:call-template name="package">
- <xsl:with-param name="name" select="@package"/>
- </xsl:call-template>
- </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
- <xsl:param name="name"/>
- <xsl:variable name="package.dir">
- <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
- <xsl:if test="$name = ''">.</xsl:if>
- </xsl:variable>
- <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
- <!-- create a classes-list.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:call-template name="classes.list">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- create a package-summary.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:call-template name="package.summary">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- for each class, creates a @name.html -->
- <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
- <xsl:for-each select="/testsuites/testsuite[@package = $name]">
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </redirect:write>
- <xsl:if test="string-length(./system-out)!=0">
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
- <xsl:value-of select="./system-out" />
- </redirect:write>
- </xsl:if>
- <xsl:if test="string-length(./system-err)!=0">
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
- <xsl:value-of select="./system-err" />
- </redirect:write>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
- <head>
- <title>Unit Test Results.</title>
- </head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="overview-frame.html" name="packageListFrame"/>
- <frame src="allclasses-frame.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </p>
- </noframes>
- </frameset>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-body {
- font:normal 68% verdana,arial,helvetica;
- color:#000000;
-}
-table tr td, table tr th {
- font-size: 68%;
-}
-table.details tr th{
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
-}
-table.details tr td{
- background:#eeeee0;
-}
-
-p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
-}
-h1 {
- margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-}
-h2 {
- margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-}
-h3 {
- margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-}
-h4 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h5 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h6 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-.Error {
- font-weight:bold; color:red;
-}
-.Failure {
- font-weight:bold; color:purple;
-}
-.Properties {
- text-align:right;
-}
-</xsl:template>
-
-
-<!-- ======================================================================
- This page is created for every testsuite class.
- It prints a summary of the testsuite and detailed information about
- testcase methods.
- ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
- <xsl:variable name="package.name" select="@package"/>
- <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
- <html>
- <head>
- <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- <script type="text/javascript" language="JavaScript">
- var TestCases = new Array();
- var cur;
- <xsl:apply-templates select="properties"/>
- </script>
- <script type="text/javascript" language="JavaScript"><![CDATA[
- function displayProperties (name) {
- var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
- var doc = win.document.open();
- doc.write("<html><head><title>Properties of " + name + "</title>");
- doc.write("<style type=\"text/css\">");
- doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
- doc.write("table tr td, table tr th { font-size: 68%; }");
- doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
- doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
- doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
- doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
- doc.write("</style>");
- doc.write("</head><body>");
- doc.write("<h3>Properties of " + name + "</h3>");
- doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
- doc.write("<table class='properties'>");
- doc.write("<tr><th>Name</th><th>Value</th></tr>");
- for (prop in TestCases[name]) {
- doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
- }
- doc.write("</table>");
- doc.write("</body></html>");
- doc.close();
- win.focus();
- }
- ]]>
- </script>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <h3>Class <xsl:value-of select="$class.name"/></h3>
-
-
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="." mode="print.test"/>
- </table>
-
- <h2>Tests</h2>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testcase.test.header"/>
- <!--
- test can even not be started at all (failure to load the class)
- so report the error directly
- -->
- <xsl:if test="./error">
- <tr class="Error">
- <td colspan="4"><xsl:apply-templates select="./error"/></td>
- </tr>
- </xsl:if>
- <xsl:apply-templates select="./testcase" mode="print.test"/>
- </table>
- <div class="Properties">
- <a>
- <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
- Properties »
- </a>
- </div>
- <xsl:if test="string-length(./system-out)!=0">
- <div class="Properties">
- <a>
- <xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
- System.out »
- </a>
- </div>
- </xsl:if>
- <xsl:if test="string-length(./system-err)!=0">
- <div class="Properties">
- <a>
- <xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
- System.err »
- </a>
- </div>
- </xsl:if>
- </body>
- </html>
-</xsl:template>
-
- <!--
- Write properties into a JavaScript data structure.
- This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
- -->
- <xsl:template match="properties">
- cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
- <xsl:for-each select="property">
- <xsl:sort select="@name"/>
- cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
- </xsl:for-each>
- </xsl:template>
-
-
-<!-- ======================================================================
- This page is created for every package.
- It prints the name of all classes that belongs to this package.
- @param name the package name to print classes.
- ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
- <xsl:param name="name"/>
- <html>
- <head>
- <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <h2><a href="package-summary.html" target="classFrame">
- <xsl:value-of select="$name"/>
- <xsl:if test="$name = ''"><none></xsl:if>
- </a></h2>
- </td>
- </tr>
- </table>
-
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- Creates an all-classes.html file that contains a link to all package-summary.html
- on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
- <html>
- <head>
- <title>All Unit Test Classes</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite" mode="all.classes">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
- <xsl:variable name="package.name" select="@package"/>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<!--
- Creates an html file that contains a link to all package-summary.html files on
- each package existing on testsuites.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
- <html>
- <head>
- <title>All Unit Test Packages</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
- <xsl:sort select="@package"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
- <tr>
- <td nowrap="nowrap">
- <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''"><none></xsl:if>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
- <html>
- <head>
- <title>Unit Test Results: Summary</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h2>Summary</h2>
- <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
- <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
- <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
- <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
- <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <tr valign="top">
- <th>Tests</th>
- <th>Failures</th>
- <th>Errors</th>
- <th>Success rate</th>
- <th>Time</th>
- </tr>
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$errorCount > 0">Error</xsl:when>
- <xsl:when test="$failureCount > 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td>
- <xsl:call-template name="display-percent">
- <xsl:with-param name="value" select="$successRate"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
- </tr>
- </table>
- <table border="0" width="95%">
- <tr>
- <td style="text-align: justify;">
- Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
- </td>
- </tr>
- </table>
-
- <h2>Packages</h2>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package" order="ascending"/>
- <!-- get the node set containing all testsuites that have the same package -->
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
- <tr valign="top">
- <!-- display a failure if there is any failure/error in the package -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
- <xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="./{translate(@package,'.','/')}/package-summary.html">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''"><none></xsl:if>
- </a></td>
- <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
- </xsl:call-template>
- </td>
- <td><xsl:value-of select="$insamepackage/@timestamp"/></td>
- <td><xsl:value-of select="$insamepackage/@hostname"/></td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
- <xsl:param name="name"/>
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h3>Package <xsl:value-of select="$name"/></h3>
-
- <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="class.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table-->
-
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
- <xsl:if test="count($insamepackage) > 0">
- <h2>Classes</h2>
- <p>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="$insamepackage" mode="print.test">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </p>
- </xsl:if>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>Unit Test Results</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- <th nowrap="nowrap">Time Stamp</th>
- <th>Host</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
- <tr valign="top">
- <th>Name</th>
- <th>Status</th>
- <th width="80%">Type</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="@errors[.> 0]">Error</xsl:when>
- <xsl:when test="@failures[.> 0]">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:apply-templates select="@tests"/></td>
- <td><xsl:apply-templates select="@errors"/></td>
- <td><xsl:apply-templates select="@failures"/></td>
- <td><xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- <td><xsl:apply-templates select="@timestamp"/></td>
- <td><xsl:apply-templates select="@hostname"/></td>
- </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="error">Error</xsl:when>
- <xsl:when test="failure">Failure</xsl:when>
- <xsl:otherwise>TableRowColor</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="@name"/></td>
- <xsl:choose>
- <xsl:when test="failure">
- <td>Failure</td>
- <td><xsl:apply-templates select="failure"/></td>
- </xsl:when>
- <xsl:when test="error">
- <td>Error</td>
- <td><xsl:apply-templates select="error"/></td>
- </xsl:when>
- <xsl:otherwise>
- <td>Success</td>
- <td></td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-
-<!-- Note : the below template error and failure are the same style
- so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the testcase template -->
-<xsl:template name="display-failures">
- <xsl:choose>
- <xsl:when test="not(@message)">N/A</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@message"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- display the stacktrace -->
- <br/><br/>
- <code>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="."/>
- </xsl:call-template>
- </code>
- <!-- the latter is better but might be problematic for non-21" monitors... -->
- <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
- <xsl:param name="string"/>
- <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
- <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
- <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
- template that will convert a carriage return into a br tag
- @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:param name="br"><br/></xsl:param>
- <xsl:value-of select='stringutils:replace(string($word),"
",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="http://xml.apache.org/xalan/redirect"
- xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-<!--
- Copyright 2001-2005 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Ant JUnitReport output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="testsuites">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all packages -->
- <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:call-template name="package">
- <xsl:with-param name="name" select="@package"/>
- </xsl:call-template>
- </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
- <xsl:param name="name"/>
- <xsl:variable name="package.dir">
- <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
- <xsl:if test="$name = ''">.</xsl:if>
- </xsl:variable>
- <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
- <!-- create a classes-list.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:call-template name="classes.list">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- create a package-summary.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:call-template name="package.summary">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- for each class, creates a @name.html -->
- <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
- <xsl:for-each select="/testsuites/testsuite[@package = $name]">
- <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </redirect:write>
- <xsl:if test="string-length(./system-out)!=0">
- <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-out.txt">
- <xsl:value-of select="./system-out" />
- </redirect:write>
- </xsl:if>
- <xsl:if test="string-length(./system-err)!=0">
- <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-err.txt">
- <xsl:value-of select="./system-err" />
- </redirect:write>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
- <head>
- <title>Unit Test Results.</title>
- </head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="overview-frame.html" name="packageListFrame"/>
- <frame src="allclasses-frame.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </p>
- </noframes>
- </frameset>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-body {
- font:normal 68% verdana,arial,helvetica;
- color:#000000;
-}
-table tr td, table tr th {
- font-size: 68%;
-}
-table.details tr th{
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
-}
-table.details tr td{
- background:#eeeee0;
-}
-
-p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
-}
-h1 {
- margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-}
-h2 {
- margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-}
-h3 {
- margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-}
-h4 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h5 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h6 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-.Error {
- font-weight:bold; color:red;
-}
-.Failure {
- font-weight:bold; color:purple;
-}
-.Properties {
- text-align:right;
-}
-</xsl:template>
-
-
-<!-- ======================================================================
- This page is created for every testsuite class.
- It prints a summary of the testsuite and detailed information about
- testcase methods.
- ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
- <xsl:variable name="package.name" select="@package"/>
- <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
- <html>
- <head>
- <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- <script type="text/javascript" language="JavaScript">
- var TestCases = new Array();
- var cur;
- <xsl:apply-templates select="properties"/>
- </script>
- <script type="text/javascript" language="JavaScript"><![CDATA[
- function displayProperties (name) {
- var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
- var doc = win.document.open();
- doc.write("<html><head><title>Properties of " + name + "</title>");
- doc.write("<style type=\"text/css\">");
- doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
- doc.write("table tr td, table tr th { font-size: 68%; }");
- doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
- doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
- doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
- doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
- doc.write("</style>");
- doc.write("</head><body>");
- doc.write("<h3>Properties of " + name + "</h3>");
- doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
- doc.write("<table class='properties'>");
- doc.write("<tr><th>Name</th><th>Value</th></tr>");
- for (prop in TestCases[name]) {
- doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
- }
- doc.write("</table>");
- doc.write("</body></html>");
- doc.close();
- win.focus();
- }
- ]]>
- </script>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <h3>Class <xsl:value-of select="$class.name"/></h3>
-
-
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="." mode="print.test"/>
- </table>
-
- <h2>Tests</h2>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testcase.test.header"/>
- <!--
- test can even not be started at all (failure to load the class)
- so report the error directly
- -->
- <xsl:if test="./error">
- <tr class="Error">
- <td colspan="4"><xsl:apply-templates select="./error"/></td>
- </tr>
- </xsl:if>
- <xsl:apply-templates select="./testcase" mode="print.test"/>
- </table>
- <div class="Properties">
- <a>
- <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
- Properties »
- </a>
- </div>
- <xsl:if test="string-length(./system-out)!=0">
- <div class="Properties">
- <a>
- <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
- System.out »
- </a>
- </div>
- </xsl:if>
- <xsl:if test="string-length(./system-err)!=0">
- <div class="Properties">
- <a>
- <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
- System.err »
- </a>
- </div>
- </xsl:if>
- </body>
- </html>
-</xsl:template>
-
- <!--
- Write properties into a JavaScript data structure.
- This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
- -->
- <xsl:template match="properties">
- cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
- <xsl:for-each select="property">
- <xsl:sort select="@name"/>
- cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
- </xsl:for-each>
- </xsl:template>
-
-
-<!-- ======================================================================
- This page is created for every package.
- It prints the name of all classes that belongs to this package.
- @param name the package name to print classes.
- ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
- <xsl:param name="name"/>
- <html>
- <head>
- <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <h2><a href="package-summary.html" target="classFrame">
- <xsl:value-of select="$name"/>
- <xsl:if test="$name = ''"><none></xsl:if>
- </a></h2>
- </td>
- </tr>
- </table>
-
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- Creates an all-classes.html file that contains a link to all package-summary.html
- on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
- <html>
- <head>
- <title>All Unit Test Classes</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite" mode="all.classes">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
- <xsl:variable name="package.name" select="@package"/>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<!--
- Creates an html file that contains a link to all package-summary.html files on
- each package existing on testsuites.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
- <html>
- <head>
- <title>All Unit Test Packages</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
- <xsl:sort select="@package"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
- <tr>
- <td nowrap="nowrap">
- <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''"><none></xsl:if>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
- <html>
- <head>
- <title>Unit Test Results: Summary</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h2>Summary</h2>
- <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
- <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
- <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
- <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
- <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <tr valign="top">
- <th>Tests</th>
- <th>Failures</th>
- <th>Errors</th>
- <th>Success rate</th>
- <th>Time</th>
- </tr>
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$errorCount > 0">Error</xsl:when>
- <xsl:when test="$failureCount > 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td>
- <xsl:call-template name="display-percent">
- <xsl:with-param name="value" select="$successRate"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
-
- </tr>
- </table>
- <table border="0" width="95%">
- <tr>
- <td style="text-align: justify;">
- Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
- </td>
- </tr>
- </table>
-
- <h2>Packages</h2>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package" order="ascending"/>
- <!-- get the node set containing all testsuites that have the same package -->
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
- <tr valign="top">
- <!-- display a failure if there is any failure/error in the package -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
- <xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="./{translate(@package,'.','/')}/package-summary.html">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''"><none></xsl:if>
- </a></td>
- <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
- </xsl:call-template>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
- <xsl:param name="name"/>
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h3>Package <xsl:value-of select="$name"/></h3>
-
- <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="class.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table-->
-
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
- <xsl:if test="count($insamepackage) > 0">
- <h2>Classes</h2>
- <p>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="$insamepackage" mode="print.test">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </p>
- </xsl:if>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>Unit Test Results</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
- <tr valign="top">
- <th>Name</th>
- <th>Status</th>
- <th width="80%">Type</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="@errors[.> 0]">Error</xsl:when>
- <xsl:when test="@failures[.> 0]">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:apply-templates select="@tests"/></td>
- <td><xsl:apply-templates select="@errors"/></td>
- <td><xsl:apply-templates select="@failures"/></td>
- <td><xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="error">Error</xsl:when>
- <xsl:when test="failure">Failure</xsl:when>
- <xsl:otherwise>TableRowColor</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="@name"/></td>
- <xsl:choose>
- <xsl:when test="failure">
- <td>Failure</td>
- <td><xsl:apply-templates select="failure"/></td>
- </xsl:when>
- <xsl:when test="error">
- <td>Error</td>
- <td><xsl:apply-templates select="error"/></td>
- </xsl:when>
- <xsl:otherwise>
- <td>Success</td>
- <td></td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-
-<!-- Note : the below template error and failure are the same style
- so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the testcase template -->
-<xsl:template name="display-failures">
- <xsl:choose>
- <xsl:when test="not(@message)">N/A</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@message"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- display the stacktrace -->
- <br/><br/>
- <code>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="."/>
- </xsl:call-template>
- </code>
- <!-- the latter is better but might be problematic for non-21" monitors... -->
- <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
- <xsl:param name="string"/>
- <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
- <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
- <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
- template that will convert a carriage return into a br tag
- @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:param name="br"><br/></xsl:param>
- <xsl:value-of select='stringutils:replace(string($word),"
",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"
- doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Ant JUnitReport output.
-
- It creates a non-framed report that can be useful to send via
- e-mail or such.
-
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
- @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
-
--->
-<xsl:template match="testsuites">
- <html>
- <head>
- <title>Unit Test Results</title>
- <style type="text/css">
- body {
- font:normal 68% verdana,arial,helvetica;
- color:#000000;
- }
- table tr td, table tr th {
- font-size: 68%;
- }
- table.details tr th{
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
- }
- table.details tr td{
- background:#eeeee0;
- }
-
- p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
- }
- h1 {
- margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
- }
- h2 {
- margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
- }
- h3 {
- margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
- }
- h4 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h5 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- h6 {
- margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
- }
- .Error {
- font-weight:bold; color:red;
- }
- .Failure {
- font-weight:bold; color:purple;
- }
- .Properties {
- text-align:right;
- }
- </style>
- <script type="text/javascript" language="JavaScript">
- var TestCases = new Array();
- var cur;
- <xsl:for-each select="./testsuite">
- <xsl:apply-templates select="properties"/>
- </xsl:for-each>
-
- </script>
- <script type="text/javascript" language="JavaScript"><![CDATA[
- function displayProperties (name) {
- var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
- var doc = win.document.open();
- doc.write("<html><head><title>Properties of " + name + "</title>");
- doc.write("<style>")
- doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
- doc.write("table tr td, table tr th { font-size: 68%; }");
- doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
- doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
- doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
- doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
- doc.write("</style>");
- doc.write("</head><body>");
- doc.write("<h3>Properties of " + name + "</h3>");
- doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
- doc.write("<table class='properties'>");
- doc.write("<tr><th>Name</th><th>Value</th></tr>");
- for (prop in TestCases[name]) {
- doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
- }
- doc.write("</table>");
- doc.write("</body></html>");
- doc.close();
- win.focus();
- }
- ]]>
- </script>
- </head>
- <body>
- <a name="top"></a>
- <xsl:call-template name="pageHeader"/>
-
- <!-- Summary part -->
- <xsl:call-template name="summary"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- Package List part -->
- <xsl:call-template name="packagelist"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- For each package create its part -->
- <xsl:call-template name="packages"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- For each class create the part -->
- <xsl:call-template name="classes"/>
-
- </body>
- </html>
-</xsl:template>
-
-
-
- <!-- ================================================================== -->
- <!-- Write a list of all packages with an hyperlink to the anchor of -->
- <!-- of the package name. -->
- <!-- ================================================================== -->
- <xsl:template name="packagelist">
- <h2>Packages</h2>
- Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <!-- list all packages recursively -->
- <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package"/>
- <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
- <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
- <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
- <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
- <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
-
- <!-- write a summary for the package -->
- <tr valign="top">
- <!-- set a nice color depending if there is an error/failure -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$failureCount > 0">Failure</xsl:when>
- <xsl:when test="$errorCount > 0">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:template>
-
-
- <!-- ================================================================== -->
- <!-- Write a package level report -->
- <!-- It creates a table with values from the document: -->
- <!-- Name | Tests | Errors | Failures | Time -->
- <!-- ================================================================== -->
- <xsl:template name="packages">
- <!-- create an anchor to this package name -->
- <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package"/>
- <a name="{@package}"></a>
- <h3>Package <xsl:value-of select="@package"/></h3>
-
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
-
- <!-- match the testsuites of this package -->
- <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
- </table>
- <a href="#top">Back to top</a>
- <p/>
- <p/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="classes">
- <xsl:for-each select="testsuite">
- <xsl:sort select="@name"/>
- <!-- create an anchor to this class name -->
- <a name="{@name}"></a>
- <h3>TestCase <xsl:value-of select="@name"/></h3>
-
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testcase.test.header"/>
- <!--
- test can even not be started at all (failure to load the class)
- so report the error directly
- -->
- <xsl:if test="./error">
- <tr class="Error">
- <td colspan="4"><xsl:apply-templates select="./error"/></td>
- </tr>
- </xsl:if>
- <xsl:apply-templates select="./testcase" mode="print.test"/>
- </table>
- <div class="Properties">
- <a>
- <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
- Properties »
- </a>
- </div>
- <p/>
-
- <a href="#top">Back to top</a>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="summary">
- <h2>Summary</h2>
- <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
- <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
- <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
- <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
- <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <tr valign="top">
- <th>Tests</th>
- <th>Failures</th>
- <th>Errors</th>
- <th>Success rate</th>
- <th>Time</th>
- </tr>
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$failureCount > 0">Failure</xsl:when>
- <xsl:when test="$errorCount > 0">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td>
- <xsl:call-template name="display-percent">
- <xsl:with-param name="value" select="$successRate"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
-
- </tr>
- </table>
- <table border="0" width="95%">
- <tr>
- <td style="text-align: justify;">
- Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
- </td>
- </tr>
- </table>
- </xsl:template>
-
- <!--
- Write properties into a JavaScript data structure.
- This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
- -->
- <xsl:template match="properties">
- cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
- <xsl:for-each select="property">
- <xsl:sort select="@name"/>
- cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
- </xsl:for-each>
- </xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>Unit Test Results</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
- <tr valign="top">
- <th>Name</th>
- <th>Status</th>
- <th width="80%">Type</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
- <tr valign="top">
- <!-- set a nice color depending if there is an error/failure -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="@failures[.> 0]">Failure</xsl:when>
- <xsl:when test="@errors[.> 0]">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
-
- <!-- print testsuite information -->
- <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
- <td><xsl:value-of select="@tests"/></td>
- <td><xsl:value-of select="@errors"/></td>
- <td><xsl:value-of select="@failures"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="failure | error">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="@name"/></td>
- <xsl:choose>
- <xsl:when test="failure">
- <td>Failure</td>
- <td><xsl:apply-templates select="failure"/></td>
- </xsl:when>
- <xsl:when test="error">
- <td>Error</td>
- <td><xsl:apply-templates select="error"/></td>
- </xsl:when>
- <xsl:otherwise>
- <td>Success</td>
- <td></td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="failure">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the tescase template -->
-<xsl:template name="display-failures">
- <xsl:choose>
- <xsl:when test="not(@message)">N/A</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@message"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- display the stacktrace -->
- <code>
- <br/><br/>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="."/>
- </xsl:call-template>
- </code>
- <!-- the later is better but might be problematic for non-21" monitors... -->
- <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
- <xsl:param name="string"/>
- <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
- <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/>
- <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
- template that will convert a carriage return into a br tag
- @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:param name="br"><br/></xsl:param>
- <xsl:value-of select='stringutils:replace(string($word),"
",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-
-</xsl:stylesheet>
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<!--
- Copyright 2000-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--
-
- The purpose have this XSL is to provide a nice way to look at the output
- from the Ant XmlLogger (ie: ant -listener org.apache.tools.ant.XmlLogger )
-
- @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
-
--->
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<xsl:template match="/">
-<html>
- <head>
- <style type="text/css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin: 0;
- font:normal 100% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- table.status {
- font:bold 80% arial,helvetica,sanserif;
- background-color:#525D76;
- color:#ffffff;
- }
- table.log tr td, tr th {
- font-size: 80%;
- }
- .error {
- color:red;
- }
- .warn {
- color:brown;
- }
- .info {
- color:gray;
- }
- .debug{
- color:gray;
- }
- .failed {
- font-size:80%;
- background-color: red;
- color:#FFFFFF;
- font-weight: bold
- }
- .complete {
- font-size:80%;
- background-color: #525D76;
- color:#FFFFFF;
- font-weight: bold
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- background: #ccc;
- color: black;
- }
- table, th, td {
- border: none
- }
- h3 {
- font:bold 80% arial,helvetica,sanserif;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
- </style>
- </head>
- <body>
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td valign="top" class="bannercell">
- <a href="http://jakarta.apache.org/">
- <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right;vertical-align:bottom">
- <a href="http://jakarta.apache.org/ant">Apache Ant</a>
- </td>
- </tr>
- </table>
-
- <table border="0" width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- </table>
-
- <xsl:apply-templates select="build"/>
-
- <!-- FOOTER -->
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td>
- <div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 2000-2002, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
- </body>
-</html>
-</xsl:template>
-
-<xsl:template match="build">
- <!-- build status -->
- <table width="100%">
- <xsl:attribute name="class">
- <xsl:if test="@error">failed</xsl:if>
- <xsl:if test="not(@error)">complete</xsl:if>
- </xsl:attribute>
- <tr>
- <xsl:if test="@error">
- <td nowrap="yes">Build Failed</td>
- </xsl:if>
- <xsl:if test="not(@error)">
- <td nowrap="yes">Build Complete</td>
- </xsl:if>
- <td style="text-align:right" nowrap="yes">Total Time: <xsl:value-of select="@time"/></td>
- </tr>
- <tr>
- <td colspan="2">
- <xsl:if test="@error">
- <tt><xsl:value-of select="@error"/></tt><br/>
- <i style="font-size:80%">See the <a href="#stacktrace" alt="Click for details">stacktrace</a>.</i>
- </xsl:if>
- </td>
- </tr>
- </table>
- <table border="1" cellspacing="2" cellpadding="3" width="100%" style="font-size:80%">
- <tr class="a"><td width="1">ant.file</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.file')], '->')"/></td></tr>
- <tr class="b"><td width="1">ant.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.version')], '->')"/></td></tr>
- <tr class="a"><td width="1">java.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'java.vm.version')], '->')"/></td></tr>
- <tr class="b"><td width="1">os.name</td><td><xsl:value-of select="substring-after(//message[contains(text(),'os.name')], '->')"/></td></tr>
- </table>
- <!-- build information -->
- <h3>Build events</h3>
- <table class="log" border="1" cellspacing="2" cellpadding="3" width="100%">
- <tr>
- <th nowrap="yes" align="left" width="1%">target</th>
- <th nowrap="yes" align="left" width="1%">task</th>
- <th nowrap="yes" align="left">message</th>
- </tr>
- <xsl:apply-templates select=".//message[@priority != 'debug']"/>
- </table>
- <p>
- <!-- stacktrace -->
- <xsl:if test="stacktrace">
- <a name="stacktrace"/>
- <h3>Error details</h3>
- <table width="100%">
- <tr><td>
- <pre><xsl:value-of select="stacktrace"/></pre>
- </td></tr>
- </table>
- </xsl:if>
- </p>
-</xsl:template>
-
-<!-- report every message but those with debug priority -->
-<xsl:template match="message[@priority!='debug']">
- <tr valign="top">
- <!-- alternated row style -->
- <xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
- </xsl:attribute>
- <td nowrap="yes" width="1%"><xsl:value-of select="../../@name"/></td>
- <td nowrap="yes" style="text-align:right" width="1%">[ <xsl:value-of select="../@name"/> ]</td>
- <td class="{@priority}" nowrap="yes">
- <xsl:value-of select="text()"/>
- </td>
- </tr>
-</xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<!--
-
- Stylesheet to transform an XML file generated by the Ant MAudit task into
- a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
-
- It use the Xalan redirect extension to write to multiple output files.
-
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
--->
-
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="classes">
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all packages -->
- <xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
- <xsl:call-template name="package">
- <xsl:with-param name="name" select="@package"/>
- </xsl:call-template>
- </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
- <xsl:param name="name"/>
- <xsl:variable name="package.dir">
- <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
- <xsl:if test="$name = ''">.</xsl:if>
- </xsl:variable>
- <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
- <!-- create a classes-list.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:call-template name="classes.list">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- create a package-summary.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:call-template name="package.summary">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </redirect:write>
-
- <!-- for each class, creates a @name.html -->
- <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
- <xsl:for-each select="/classes/class[@package = $name]">
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </redirect:write>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<HTML>
- <HEAD><TITLE>Audit Results.</TITLE></HEAD>
- <FRAMESET cols="20%,80%">
- <FRAMESET rows="30%,70%">
- <FRAME src="overview-frame.html" name="packageListFrame"/>
- <FRAME src="allclasses-frame.html" name="classListFrame"/>
- </FRAMESET>
- <FRAME src="overview-summary.html" name="classFrame"/>
- </FRAMESET>
- <noframes>
- <H2>Frame Alert</H2>
- <P>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </P>
- </noframes>
-</HTML>
-</xsl:template>
-
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin-left: 10;
- margin-right: 10;
- font:normal 80% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- font-weight:bold;
- background: #ccc;
- color: black;
- }
- table, th, td {
- font-size:100%;
- border: none
- }
- table.log tr td, tr th {
-
- }
- h2 {
- font-weight:bold;
- font-size:140%;
- margin-bottom: 5;
- }
- h3 {
- font-size:100%;
- font-weight:bold;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
-</xsl:template>
-
-
-<!-- print the violations of the class -->
-<xsl:template match="class" mode="class.details">
- <xsl:variable name="package.name" select="@package"/>
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <xsl:call-template name="pageHeader"/>
- <H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="class.audit.header"/>
- <xsl:apply-templates select="." mode="print.audit"/>
- </table>
-
- <H3>Violations</H3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="violation.audit.header"/>
- <xsl:apply-templates select="./violation" mode="print.audit">
- <xsl:sort data-type="number" select="@line"/>
- </xsl:apply-templates>
- </table>
- <xsl:call-template name="pageFooter"/>
- </BODY>
- </HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
- <xsl:param name="name"/>
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
- </td>
- </tr>
- </table>
-
- <h2>Classes</h2>
- <TABLE WIDTH="100%">
- <xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </TABLE>
- </BODY>
- </HTML>
-</xsl:template>
-<!-- the class to list -->
-<xsl:template match="class" mode="classes.list">
- <tr>
- <td nowrap="nowrap">
- <!-- @bug naming to fix for inner classes -->
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
-</xsl:template>
-
-
-<!--
- Creates an all-classes.html file that contains a link to all package-summary.html
- on each class.
--->
-<xsl:template match="classes" mode="all.classes">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:apply-templates select=".//class" mode="all.classes">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
- <!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
- <xsl:variable name="package.name" select="@package"/>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<!--
- Creates an html file that contains a link to all package-summary.html files on
- each package existing on testsuites.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="classes" mode="all.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
- <xsl:sort select="@package" order="ascending"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.packages">
- <tr>
- <td nowrap="nowrap">
- <a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@package"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="classes" mode="overview.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body onload="open('allclasses-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <h3>Summary</h3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <th>Audited classes</th>
- <th>Reported classes</th>
- <th>Violations</th>
- </tr>
- <tr class="a">
- <td><xsl:value-of select="@audited"/></td>
- <td><xsl:value-of select="@reported"/></td>
- <td><xsl:value-of select="@violations"/></td>
- </tr>
- </table>
- <table border="0" width="100%">
- <tr>
- <td style="text-align: justify;">
- Note: Rules checked have originated from style guidelines suggested by the language designers,
- experience from the Java development community and insite experience. Violations are generally
- reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
- and Metamata Audit rules (x.x).
- Please consult these documents for additional information about violations.
- <p/>
- Rules checked also enforce adherence to <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java coding guidelines</a> in use at Jakarta.
- <p/>
- One should note that these violations do not necessary underline errors but should be used
- as an indication for <i>possible</i> errors. As always, use your best judgment and review
- them carefully, it might save you hours of debugging.
- </td>
- </tr>
- </table>
-
- <h3>Packages</h3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="class.audit.header"/>
- <xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
- <xsl:sort select="@package" order="ascending"/>
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
- <td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
- </tr>
- </xsl:for-each>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
- <xsl:param name="name"/>
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h3>Package <xsl:value-of select="$name"/></h3>
-
- <!--table border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="class.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table-->
-
- <xsl:if test="count(/classes/class[./@package = $name]) > 0">
- <H3>Classes</H3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="class.audit.header"/>
- <xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </xsl:if>
- <xsl:call-template name="pageFooter"/>
- </BODY>
- </HTML>
-</xsl:template>
-
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="bannercell" rowspan="2">
- <a href="http://jakarta.apache.org/">
- <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right"><h2>Source Code Audit</h2></td>
- </tr>
- <tr>
- <td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td>
- <div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 1999-2001, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
-</xsl:template>
-
-
-<!-- class header -->
-<xsl:template name="class.audit.header">
- <tr>
- <th width="80%">Name</th>
- <th>Violations</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="violation.audit.header">
- <tr>
- <th>Line</th>
- <th>Message</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="class" mode="print.audit">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:apply-templates select="@violations"/></td>
- </tr>
-</xsl:template>
-
-<xsl:template match="violation" mode="print.audit">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="@line"/></td>
- <td><xsl:apply-templates select="@message"/></td>
- </tr>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-</xsl:stylesheet>
-
+++ /dev/null
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:lxslt="http://xml.apache.org/xslt"
- xmlns:xalan="http://xml.apache.org/xalan"
- xmlns:redirect="org.apache.xalan.lib.Redirect"
- exclude-result-prefixes="xalan"
- extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<!--
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
- -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- default max value for the metrics -->
-<xsl:param name="vg.max" select="10"/>
-<xsl:param name="loc.max" select="1000"/>
-<xsl:param name="dit.max" select="10"/>
-<xsl:param name="noa.max" select="250"/>
-<xsl:param name="nrm.max" select="50"/>
-<xsl:param name="nlm.max" select="250"/>
-<xsl:param name="wmc.max" select="250"/>
-<xsl:param name="rfc.max" select="50"/>
-<xsl:param name="dac.max" select="10"/>
-<xsl:param name="fanout.max" select="10"/>
-<xsl:param name="cbo.max" select="15"/>
-<xsl:param name="lcom.max" select="10"/>
-<xsl:param name="nocl.max" select="10"/>
-
-
-<!-- create a tree fragment to speed up processing -->
-<xsl:variable name="doctree.var">
- <xsl:element name="classes">
- <xsl:for-each select=".//class">
- <xsl:element name="class">
- <xsl:attribute name="package">
- <xsl:value-of select="(ancestor::package)[last()]/@name"/>
- </xsl:attribute>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="name">
- <xsl:apply-templates select="." mode="class.name"/>
- </xsl:attribute>
- <xsl:copy-of select="method"/>
- </xsl:element>
- </xsl:for-each>
- </xsl:element>
-</xsl:variable>
-
-<xsl:variable name="doctree" select="xalan:nodeset($doctree.var)"/>
-
-<xsl:template match="metrics">
-
- <!-- create the index.html -->
- <redirect:write file="{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </redirect:write>
-
- <!-- create the stylesheet.css -->
- <redirect:write file="{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </redirect:write>
-
- <redirect:write file="{$output.dir}/metrics-reference.html">
- <xsl:call-template name="metrics-reference.html"/>
- </redirect:write>
-
- <!-- create the overview-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </redirect:write>
-
- <!-- create the all-packages.html at the root -->
- <redirect:write file="{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </redirect:write>
-
- <!-- create the all-classes.html at the root -->
- <redirect:write file="{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </redirect:write>
-
- <!-- process all packages -->
- <xsl:apply-templates select=".//package"/>
-</xsl:template>
-
-
-<xsl:template match="package">
- <xsl:variable name="package.name" select="@name"/>
- <xsl:variable name="package.dir">
- <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="translate($package.name,'.','/')"/></xsl:if>
- <xsl:if test="$package.name = 'unnamed package'">.</xsl:if>
- </xsl:variable>
- <!-- create a classes-list.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:apply-templates select="." mode="classes.list"/>
- </redirect:write>
-
- <!-- create a package-summary.html in the package directory -->
- <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:apply-templates select="." mode="package.summary"/>
- </redirect:write>
-
- <!-- for each class, creates a @name.html -->
- <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
- <xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
- <!--Processing <xsl:value-of select="$class.name"/><xsl:text> </xsl:text> -->
- <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </redirect:write>
- </xsl:for-each>
-</xsl:template>
-
-<!-- little trick to compute the classname for inner and non inner classes -->
-<!-- this is all in one line to avoid CRLF in the name -->
-<xsl:template match="class" mode="class.name">
- <xsl:if test="parent::class"><xsl:apply-templates select="parent::class" mode="class.name"/>.<xsl:value-of select="@name"/></xsl:if><xsl:if test="not(parent::class)"><xsl:value-of select="@name"/></xsl:if>
-</xsl:template>
-
-
-<xsl:template name="index.html">
-<HTML>
- <HEAD><TITLE>Metrics Results.</TITLE></HEAD>
- <FRAMESET cols="20%,80%">
- <FRAMESET rows="30%,70%">
- <FRAME src="overview-frame.html" name="packageListFrame"/>
- <FRAME src="allclasses-frame.html" name="classListFrame"/>
- </FRAMESET>
- <FRAME src="overview-summary.html" name="classFrame"/>
- </FRAMESET>
- <noframes>
- <H2>Frame Alert</H2>
- <P>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- </P>
- </noframes>
-</HTML>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="metrics-reference.html">
-<html>
-<head>
-<link title="Style" type="text/css" rel="stylesheet" href="stylesheet.css"/>
-</head>
-<body style="text-align:justify;">
-<h2>Metrics Reference</h2>
-<a href="#V(G)">V(G)</a> |
-<a href="#LOC">LOC</a> |
-<a href="#DIT">DIT</a> |
-<a href="#NOA">NOA</a> |
-<a href="#NRM">NRM</a> |
-<a href="#NLM">NLM</a> |
-<a href="#WMC">WMC</a> |
-<a href="#RFC">RFC</a> |
-<a href="#DAC">DAC</a> |
-<a href="#FANOUT">FANOUT</a> |
-<a href="#CBO">CBO</a> |
-<a href="#LCOM">LCOM</a> |
-<a href="#NOC">NOC</a>
-
-<a name="V(G)"/>
-<h3>Cyclomatic Complexity - V(G)</h3>
-This metric was introduced in the 1970s to measure the amount of control
-flow complexity or branching complexity in a module such as a
-subroutine. It gives the number of paths that may be taken through the
-code, and was initially developed to give some measure of the cost of
-producing a test case for the module by executing each path.
-<p/>
-Methods with a high cyclomatic complexity tend to be more difficult to
-understand and maintain. In general the more complex the methods of an
-application, the more difficult it will be to test it, and this will adversely
-affect its reliability.
-<p/>
-V(G) is a measure of the control flow complexity of a method or
-constructor. It counts the number of branches in the body of the method,
-defined as:
-<ul>
-<li>while statements;</li>
-<li>if statements;</li>
-<li>for statements.</li>
-</ul>
-
-The metric can also be configured to count each case of a switch
-statement as well.
-
-<a name="LOC"/>
-<h3>Lines of Code - LOC</h3>
-
-This is perhaps the simplest of all the metrics to define and compute.
-Counting lines has a long history as a software metric dating from before
-the rise of structured programming, and it is still in widespread use today.
-The size of a method affects the ease with which it can be understood, its
-reusability and its maintainability. There are a variety of ways that the size
-can be calculated. These include counting all the lines of code, the number
-of statements, the blank lines of code, the lines of commentary, and the
-lines consisting only of syntax such as block delimiters.
-<p/>
-This metric can also be used for sizing other constructs as well, for
-example, the overall size of a Java class or package can be measured by
-counting the number of source lines it consists of.
-<p/>
-LOC can be used to determine the size of a compilation unit (source file),
-class or interface, method, constructor, or field. It can be configured to
-ignore:
-<ul>
-<li>blank lines;</li>
-<li>lines consisting only of comments;</li>
-<li>lines consisting only of opening and closing braces.</li>
-</ul>
-
-<a name="DIT"/>
-<h3>Depth of Inheritance Hierarchy - DIT</h3>
-
-This metric calculates how far down the inheritance hierarchy a class is
-declared. In Java all classes have java.lang.Object as their ultimate
-superclass, which is defined to have a depth of 1. So a class that
-immediately extends java.lang.Object has a metric value of 2; any of its
-subclasses will have a value of 3, and so on.
-<p/>
-A class that is deep within the tree inherits more methods and state
-variables, thereby increasing its complexity and making it difficult to
-predict its behavior. It can be harder to understand a system with many
-inheritance layers.
-<p/>
-DIT is defined for classes and interfaces:
-<ul>
-<li>all interface types have a depth of 1;</li>
-<li>the class java.lang.Object has a depth of 1;</li>
-<li>all other classes have a depth of 1 + the depth of their super class.</li>
-</ul>
-
-<a name="NOA"/>
-<h3>Number of Attributes - NOA</h3>
-
-The number of distinct state variables in a class serves as one measure of
-its complexity. The more state a class represents the more difficult it is to
-maintain invariants for it. It also hinders comprehensibility and reuse.
-<p/>
-In Java, state can be exposed to subclasses through protected fields, which
-entails that the subclass also be aware of and maintain any invariants. This
-interference with the class's data encapsulation can be a source of defects
-and hidden dependencies between the state variables.
-<p/>
-NOA is defined for classes and interfaces. It counts the number of fields
-declared in the class or interface.
-
-<a name="NRM"/>
-<h3>Number of Remote Methods - NRM</h3>
-
-NRM is defined for classes. A remote method call is defined as an
-invocation of a method that is not declared in any of:
-<ul>
-<li>the class itself;</li>
-<li>a class or interface that the class extends or implements;</li>
-<li>a class or method that extends the class.</li>
-</ul>
-
-The value is the count of all the remote method calls in all of the methods
-and constructors of the class.
-
-<a name="NLM"/>
-<h3>Number of Local Methods - NLM</h3>
-
-NLM is defined for classes and interfaces. A local method is defined as a
-method that is declared in the class or interface. NLM can be configured to
-include the local methods of all of the class's superclasses. Methods with
-public, protected, package and private visibility can be independently
-counted by setting configuration parameters.
-
-<a name="WMC"/>
-<h3>Weighted Methods per Class - WMC</h3>
-
-If the number of methods in a class can be determined during the design
-and modeling phase of a project, it can be used as a predictor of how
-much time and effort is needed to develop, debug and maintain it. This
-metric can be further refined by incorporating a weighting for the
-complexity of each method. The usual weighting is given by the cyclomatic
-complexity of the method.
-<p/>
-The subclasses of a class inherit all of its public and protected methods,
-and possibly its package methods as well, so the number of methods a
-class has directly impacts the complexity of its subclasses. Classes with
-large numbers of methods are often specific to a particular application,
-reducing the ability to reuse them.
-<p/>
-The definition of WMC is based upon NLM, and it provides the same
-configuration parameters for counting inherited methods and of varying
-visibility. The main difference is that NLM always counts each method as 1,
-whereas WMC will weight each method. There are two weighting schemes:
-<ul>
-<li>V(G) the cyclomatic complexity of the method is used as its weight.
- Methods from class files are given a V(G) of 1.</li>
-<li>the arity, or the number of parameters of the method are used to
- determine the weight.</li>
-</ul>
-
-<a name="RFC"/>
-<h3>Response For Class - RFC</h3>
-
-The response set of a class is the set of all methods that can be invoked as
-a result of a message sent to an object of the class. This includes methods
-in the class's inheritance hierarchy and methods that can be invoked on
-other objects. The Response For Class metric is defined to be size of the
-response set for the class. A class which provides a larger response set is
-considered to be more complex than one with a smaller response set.
-<p/>
-One reason for this is that if a method call on a class can result in a large
-number of different method calls on the target and other classes, then it
-can be harder to test the behavior of the class and debug problems. It will
-typically require a deeper understanding of the potential interactions that
-objects of the class can have with the rest of the system.
-<p/>
-RFC is defined as the sum of NLM and NRM for the class. The local methods
-include all of the public, protected, package and private methods, but not
-methods declared only in a superclass.
-
-<a name="DAC"/>
-<h3>Data Abstraction Coupling - DAC</h3>
-
-DAC is defined for classes and interfaces. It counts the number of reference
-types that are used in the field declarations of the class or interface. The
-component types of arrays are also counted. Any field with a type that is
-either a supertype or a subtype of the class is not counted.
-
-<a name="FANOUT"/>
-<h3>Fan Out - FANOUT</h3>
-
-FANOUT is defined for classes and interfaces, constructors and methods. It
-counts the number of reference types that are used in:
-<ul>
-<li>field declarations;</li>
-<li>formal parameters and return types;</li>
-<li>throws declarations;</li>
-<li>local variables.</li>
-</ul>
-
-The component types of arrays are also counted. Any type that is either a
-supertype or a subtype of the class is not counted.
-
-<a name="CBO"/>
-<h3>Coupling Between Objects - CBO</h3>
-
-When one object or class uses another object or class they are said to be
-coupled. One major source of coupling is that between a superclass and a
-subclass. A coupling is also introduced when a method or field in another
-class is accessed, or when an object of another class is passed into or out
-of a method invocation. Coupling Between Objects is a measure of the
-non-inheritance coupling between two objects.
-<p/>
-A high value of coupling reduces the modularity of the class and makes
-reuse more difficult. The more independent a class is the more likely it is
-that it will be possible to reuse it in another part of the system. When a
-class is coupled to another class it becomes sensitive to changes in that
-class, thereby making maintenance for difficult. In addition, a class that is
-overly dependent on other classes can be difficult to understand and test in
-isolation.
-<p/>
-CBO is defined for classes and interfaces, constructors and methods. It
-counts the number of reference types that are used in:
-<ul>
-<li>field declarations</li>
-<li>formal parameters and return types</li>
-<li>throws declarations</li>
-<li>local variables</li>
-</ul>
-
-It also counts:
-<ul>
-<li>types from which field and method selections are made</li>
-</ul>
-
-The component types of arrays are also counted. Any type that is either a
-supertype or a subtype of the class is not counted.
-
-<a name="LCOM"/>
-<h3>Lack of Cohesion Of Methods - LCOM</h3>
-
-The cohesion of a class is the degree to which its methods are related to
-each other. It is determined by examining the pattern of state variable
-accesses within the set of methods. If all the methods access the same state
-variables then they have high cohesion; if they access disjoint sets of
-variables then the cohesion is low. An extreme example of low cohesion
-would be if none of the methods accessed any of the state variables.
-
-If a class exhibits low method cohesion it indicates that the design of the
-class has probably been partitioned incorrectly, and could benefit by being
-split into more classes with individually higher cohesion. On the other
-hand, a high value of cohesion (a low lack of cohesion) implies that the
-class is well designed. A cohesive class will tend to provide a high degree
-of encapsulation, whereas a lack of cohesion decreases encapsulation and
-increases complexity.
-<p/>
-Another form of cohesion that is useful for Java programs is cohesion
-between nested and enclosing classes. A nested class that has very low
-cohesion with its enclosing class would probably better designed as a peer
-class rather than a nested class.
-<p/>
-LCOM is defined for classes. Operationally, LCOM takes each pair of
-methods in the class and determines the set of fields they each access. If
-they have disjoint sets of field accesses increase the count P by one. If they
-share at least one field access then increase Q by one. After considering
-each pair of methods,
-LCOM = (P > Q) ? (P - Q) : 0
-<p/>
-Indirect access to fields via local methods can be considered by setting a
-metric configuration parameter.
-
-<a name="NOC"/>
-<h3>Number Of Classes - NOC</h3>
-
-The overall size of the system can be estimated by calculating the number
-of classes it contains. A large system with more classes is more complex
-than a smaller one because the number of potential interactions between
-objects is higher. This reduces the comprehensibility of the system which
-in turn makes it harder to test, debug and maintain.
-<p/>
-If the number of classes in the system can be projected during the initial
-design phase of the project it can serve as a base for estimating the total
-effort and cost of developing, debugging and maintaining the system.
-<p/>
-The NOC metric can also usefully be applied at the package and class level
-as well as the total system.
-<p/>
-NOCL is defined for class and interfaces. It counts the number of classes or
-interfaces that are declared. This is usually 1, but nested class declarations
-will increase this number.
-</body>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin-left: 10;
- margin-right: 10;
- font:normal 80% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- font-weight:bold;
- background: #ccc;
- color: black;
- }
- table, th, td {
- font-size:100%;
- border: none
- }
- table.log tr td, tr th {
-
- }
- h2 {
- font-weight:bold;
- font-size:140%;
- margin-bottom: 5;
- }
- h3 {
- font-size:100%;
- font-weight:bold;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
- .Error {
- font-weight:bold; color:red;
- }
-
-</xsl:template>
-
-<!-- print the metrics of the class -->
-<xsl:template match="class" mode="class.details">
- <!--xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/-->
- <xsl:variable name="package.name" select="@package"/>
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <xsl:call-template name="pageHeader"/>
-
- <H3>Class <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="all.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table>
-
- <H3>Methods</H3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="method.metrics.header"/>
- <xsl:apply-templates select="method" mode="print.metrics"/>
- </table>
-
- <xsl:call-template name="pageFooter"/>
- </BODY>
- </HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </HEAD>
- <BODY>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
- </td>
- </tr>
- </table>
-
- <H2>Classes</H2>
- <TABLE WIDTH="100%">
- <!-- xalan-nodeset:nodeset for Xalan 1.2.2 -->
- <xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </TABLE>
- </BODY>
- </HTML>
-</xsl:template>
-
-
-<!--
- Creates an all-classes.html file that contains a link to all package-summary.html
- on each class.
--->
-<xsl:template match="metrics" mode="all.classes">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="''"/>
- </xsl:call-template>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="$doctree/classes/class">
- <xsl:sort select="@name"/>
- <xsl:apply-templates select="." mode="all.classes"/>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
- <xsl:variable name="package.name" select="@package"/>
- <xsl:variable name="class.name" select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($package.name='unnamed package')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:value-of select="$class.name"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="$class.name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-<!--
- Creates an html file that contains a link to all package-summary.html files on
- each package existing on testsuites.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="metrics" mode="all.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="./package/@name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select=".//package[not(./@name = 'unnamed package')]" mode="all.packages">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="package" mode="all.packages">
- <tr>
- <td nowrap="nowrap">
- <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="metrics" mode="overview.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="''"/>
- </xsl:call-template>
- </head>
- <body onload="open('allclasses-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <h3>Summary</h3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <tr>
- <th><a href="metrics-reference.html#V(G)">V(G)</a></th>
- <th><a href="metrics-reference.html#LOC">LOC</a></th>
- <th><a href="metrics-reference.html#DIT">DIT</a></th>
- <th><a href="metrics-reference.html#NOA">NOA</a></th>
- <th><a href="metrics-reference.html#NRM">NRM</a></th>
- <th><a href="metrics-reference.html#NLM">NLM</a></th>
- <th><a href="metrics-reference.html#WMC">WMC</a></th>
- <th><a href="metrics-reference.html#RFC">RFC</a></th>
- <th><a href="metrics-reference.html#DAC">DAC</a></th>
- <th><a href="metrics-reference.html#FANOUT">FANOUT</a></th>
- <th><a href="metrics-reference.html#CBO">CBO</a></th>
- <th><a href="metrics-reference.html#LCOM">LCOM</a></th>
- <th><a href="metrics-reference.html#NOCL">NOCL</a></th>
- </tr>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table>
- <table border="0" width="100%">
- <tr>
- <td style="text-align: justify;">
- Note: Metrics evaluate the quality of software by analyzing the program source and quantifying
- various kind of complexity. Complexity is a common source of problems and defects in software.
- High complexity makes it more difficult to develop, understand, maintain, extend, test and debug
- a program.
- <p/>
- The primary use of metrics is to focus your attention on those parts of code that potentially are
- complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
- actions.
- For additional information about metrics and their meaning, please consult
- Metamata Metrics manual.
- </td>
- </tr>
- </table>
-
- <h3>Packages</h3>
- <table border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="all.metrics.header"/>
- <xsl:for-each select=".//package[not(@name = 'unnamed package')]">
- <xsl:sort select="@name" order="ascending"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </xsl:for-each>
- </table>
- <!-- @bug there could some classes at this level (classes in unnamed package) -->
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="package" mode="package.summary">
- <HTML>
- <HEAD>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </HEAD>
- <body onload="open('package-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <!-- create an anchor to this package name -->
- <h3>Package <xsl:value-of select="@name"/></h3>
-
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="all.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table>
-
- <table border="0" width="100%">
- <tr>
- <td style="text-align: justify;">
- Note: Metrics evaluate the quality of software by analyzing the program source and quantifying
- various kind of complexity. Complexity is a common source of problems and defects in software.
- High complexity makes it more difficult to develop, understand, maintain, extend, test and debug
- a program.
- <p/>
- The primary use of metrics is to focus your attention on those parts of code that potentially are
- complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
- actions.
- For additional information about metrics and their meaning, please consult
- Metamata Metrics manual.
- </td>
- </tr>
- </table>
-
- <xsl:variable name="classes-in-package" select="$doctree/classes/class[@package = current()/@name]"/>
- <xsl:if test="count($classes-in-package) > 0">
- <H3>Classes</H3>
- <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
- <xsl:call-template name="all.metrics.header"/>
- <xsl:for-each select="$classes-in-package">
- <xsl:sort select="@name"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </xsl:for-each>
- </table>
- </xsl:if>
-
- <xsl:call-template name="pageFooter"/>
- </body>
- </HTML>
-</xsl:template>
-
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-
-<!-- Page Header -->
-<xsl:template name="pageHeader">
-
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="bannercell" rowspan="2">
- <a href="http://jakarta.apache.org/">
- <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right"><h2>Source Code Metrics</h2></td>
- </tr>
- <tr>
- <td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Metrics</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td>
- <div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 1999-2001, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="all.metrics.header">
- <tr>
- <th width="80%">Name</th>
- <th nowrap="nowrap">V(G)</th>
- <th>LOC</th>
- <th>DIT</th>
- <th>NOA</th>
- <th>NRM</th>
- <th>NLM</th>
- <th>WMC</th>
- <th>RFC</th>
- <th>DAC</th>
- <th>FANOUT</th>
- <th>CBO</th>
- <th>LCOM</th>
- <th>NOCL</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="method.metrics.header">
- <tr>
- <th width="80%">Name</th>
- <th nowrap="nowrap">V(G)</th>
- <th>LOC</th>
- <th>FANOUT</th>
- <th>CBO</th>
- </tr>
-</xsl:template>
-
-<!-- method information -->
-<xsl:template match="method" mode="print.metrics">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:apply-templates select="@name"/></td>
- <td><xsl:apply-templates select="@vg"/></td>
- <td><xsl:apply-templates select="@loc"/></td>
- <td><xsl:apply-templates select="@fanout"/></td>
- <td><xsl:apply-templates select="@cbo"/></td>
- </tr>
-</xsl:template>
-
-<!-- class information -->
-<xsl:template match="class" mode="print.metrics">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:apply-templates select="@vg"/></td>
- <td><xsl:apply-templates select="@loc"/></td>
- <td><xsl:apply-templates select="@dit"/></td>
- <td><xsl:apply-templates select="@noa"/></td>
- <td><xsl:apply-templates select="@nrm"/></td>
- <td><xsl:apply-templates select="@nlm"/></td>
- <td><xsl:apply-templates select="@wmc"/></td>
- <td><xsl:apply-templates select="@rfc"/></td>
- <td><xsl:apply-templates select="@dac"/></td>
- <td><xsl:apply-templates select="@fanout"/></td>
- <td><xsl:apply-templates select="@cbo"/></td>
- <td><xsl:apply-templates select="@lcom"/></td>
- <td><xsl:apply-templates select="@nocl"/></td>
- </tr>
-</xsl:template>
-
-<xsl:template match="file|package" mode="print.metrics">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td>
- <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@name"/>
- </a>
- </td>
- <td><xsl:apply-templates select="@vg"/></td>
- <td><xsl:apply-templates select="@loc"/></td>
- <td><xsl:apply-templates select="@dit"/></td>
- <td><xsl:apply-templates select="@noa"/></td>
- <td><xsl:apply-templates select="@nrm"/></td>
- <td><xsl:apply-templates select="@nlm"/></td>
- <td><xsl:apply-templates select="@wmc"/></td>
- <td><xsl:apply-templates select="@rfc"/></td>
- <td><xsl:apply-templates select="@dac"/></td>
- <td><xsl:apply-templates select="@fanout"/></td>
- <td><xsl:apply-templates select="@cbo"/></td>
- <td><xsl:apply-templates select="@lcom"/></td>
- <td><xsl:apply-templates select="@nocl"/></td>
- </tr>
-</xsl:template>
-
-<xsl:template match="metrics" mode="print.metrics">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <!-- the global metrics is the top package metrics -->
- <td><xsl:apply-templates select="./package/@vg"/></td>
- <td><xsl:apply-templates select="./package/@loc"/></td>
- <td><xsl:apply-templates select="./package/@dit"/></td>
- <td><xsl:apply-templates select="./package/@noa"/></td>
- <td><xsl:apply-templates select="./package/@nrm"/></td>
- <td><xsl:apply-templates select="./package/@nlm"/></td>
- <td><xsl:apply-templates select="./package/@wmc"/></td>
- <td><xsl:apply-templates select="./package/@rfc"/></td>
- <td><xsl:apply-templates select="./package/@dac"/></td>
- <td><xsl:apply-templates select="./package/@fanout"/></td>
- <td><xsl:apply-templates select="./package/@cbo"/></td>
- <td><xsl:apply-templates select="./package/@lcom"/></td>
- <td><xsl:apply-templates select="./package/@nocl"/></td>
- </tr>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-
-<!-- how to display the metrics with their max value -->
-<!-- @todo the max values must be external to the xsl -->
-
- <xsl:template match="@vg">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$vg.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@loc">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$loc.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@dit">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$dit.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@noa">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$noa.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@nrm">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$nrm.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@nlm">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$nlm.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@wmc">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$wmc.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@rfc">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$rfc.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@dac">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$dac.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@fanout">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$fanout.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@cbo">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$cbo.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@lcom">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$lcom.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="@nocl">
- <xsl:call-template name="display-value">
- <xsl:with-param name="value" select="current()"/>
- <xsl:with-param name="max" select="$nocl.max"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="display-value">
- <xsl:param name="value"/>
- <xsl:param name="max"/>
- <xsl:if test="$value > $max">
- <xsl:attribute name="class">Error</xsl:attribute>
- </xsl:if>
- <xsl:value-of select="$value"/>
- </xsl:template>
-
-</xsl:stylesheet>
-
+++ /dev/null
-<!--
- Copyright 2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<!-- a stylesheet to display changelogs ala netbeans -->
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name="title"/>
- <xsl:param name="module"/>
- <xsl:param name="cvsweb"/>
-
- <xsl:output method="html" indent="yes"/>
-
- <!-- Copy standard document elements. Elements that
- should be ignored must be filtered by apply-templates
- tags. -->
- <xsl:template match="*">
- <xsl:copy>
- <xsl:copy-of select="attribute::*[. != '']"/>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="tagdiff">
- <HTML>
- <HEAD>
- <TITLE><xsl:value-of select="$title"/></TITLE>
- </HEAD>
- <BODY link="#000000" alink="#000000" vlink="#000000" text="#000000">
- <style type="text/css">
- body, p {
- font-family: verdana,arial,helvetica;
- font-size: 80%;
- color:#000000;
- }
- .dateAndAuthor {
- font-family: verdana,arial,helvetica;
- font-size: 80%;
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
- }
- tr, td{
- font-family: verdana,arial,helvetica;
- font-size: 80%;
- background:#eeeee0;
- }
- </style>
- <h1>
- <a name="top"><xsl:value-of select="$title"/></a>
- </h1>
- Tagdiff between <xsl:value-of select="@startTag"/> <xsl:value-of select="@startDate"/> and
- <xsl:value-of select="@endTag"/> <xsl:value-of select="@endDate"/>
- <p align="right">Designed for use with <a href="http://ant.apache.org/">Ant</a>.</p>
- <hr size="2"/>
- <a name="TOP"/>
- <table width="100%">
- <tr>
- <td align="right">
- <a href="#New">New Files</a> |
- <a href="#Modified">Modified Files</a> |
- <a href="#Removed">Removed Files</a>
- </td>
- </tr>
- </table>
- <TABLE BORDER="0" WIDTH="100%" CELLPADDING="3" CELLSPACING="1">
- <xsl:call-template name="show-entries">
- <xsl:with-param name="title">New Files</xsl:with-param>
- <xsl:with-param name="anchor">New</xsl:with-param>
- <xsl:with-param name="entries" select=".//entry[file/revision][not(file/prevrevision)]"/>
- </xsl:call-template>
-
- <xsl:call-template name="show-entries">
- <xsl:with-param name="title">Modified Files</xsl:with-param>
- <xsl:with-param name="anchor">Modified</xsl:with-param>
- <xsl:with-param name="entries" select=".//entry[file/revision][file/prevrevision]"/>
- </xsl:call-template>
-
- <xsl:call-template name="show-entries">
- <xsl:with-param name="title">Removed Files</xsl:with-param>
- <xsl:with-param name="anchor">Removed</xsl:with-param>
- <xsl:with-param name="entries" select=".//entry[not(file/revision)][not(file/prevrevision)]"/>
- </xsl:call-template>
- </TABLE>
-
- </BODY>
- </HTML>
- </xsl:template>
-
- <xsl:template name="show-entries">
- <xsl:param name="title"/>
- <xsl:param name="anchor"/>
- <xsl:param name="entries"/>
- <TR>
- <TD colspan="2" class="dateAndAuthor">
- <a>
- <xsl:attribute name="name"><xsl:value-of select="$anchor"/></xsl:attribute>
- <xsl:value-of select="$title"/> - <xsl:value-of select="count($entries)"/> entries
- </a>
- <a href="#TOP">(back to top)</a>
- </TD>
- </TR>
- <TR>
- <TD width="20">
- <xsl:text> </xsl:text>
- </TD>
- <TD>
- <ul>
- <xsl:apply-templates select="$entries"/>
- </ul>
- </TD>
- </TR>
- </xsl:template>
-
- <xsl:template match="entry">
- <xsl:apply-templates select="file"/>
- </xsl:template>
-
- <xsl:template match="date">
- <i><xsl:value-of select="."/></i>
- </xsl:template>
-
- <xsl:template match="time">
- <i><xsl:value-of select="."/></i>
- </xsl:template>
-
- <xsl:template match="author">
- <i>
- <a>
- <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
- <xsl:value-of select="."/>
- </a>
- </i>
- </xsl:template>
-
- <xsl:template match="file">
- <li>
- <a target="_new">
- <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" /></xsl:attribute>
- <xsl:value-of select="name" />
- </a>
- <xsl:if test="string-length(prevrevision) > 0 or string-length(revision) > 0">
- <xsl:text> </xsl:text>
- <a target="_new">
- <xsl:choose>
- <xsl:when test="string-length(prevrevision) = 0 ">
- <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/>&diff_format=h</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose> (<xsl:value-of select="revision"/>)
- </a>
- </xsl:if>
- </li>
- </xsl:template>
-
- <!-- Any elements within a msg are processed,
- so that we can preserve HTML tags. -->
- <xsl:template match="msg">
- <b><xsl:apply-templates/></b>
- </xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-Please refer to the Ant manual under Installing Ant / Library
-Dependencies for a list of the jar requirements for various optional
-tasks and features.
-
-This directory contains xercesImpl.jar from the 2.6.2 release of
-Apache Xerces. For more information or newer releases see
-<http://xml.apache.org/xerces2-j/>. See the file LICENSE.xerces for
-the terms of distribution.
-
-It also contains xml-apis.jar from the 2.6.2 release of Apache Xerces.
-For more information or newer releases see
-<http://xml.apache.org/commons/>. See the files LICENSE.dom and
-LICENSE.sax for the terms of distribution.
-
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
- <TITLE>Welcome to Apache Ant 1.6</TITLE>
-</HEAD>
-<BODY LANG="en-US" BGCOLOR="#ffffff" DIR="LTR">
-<H1>Welcome to Apache Ant 1.6</H1>
-<P><BR><BR>
-</P>
-<H2>Your life just got better.
-</H2>
-<P>Not in big ways. Your social life isn't going to be helped, though
-with any luck you may now have more time for one. Nor is it going to
-take less time to write your Java code -although we note that running
-<A HREF="http://xdoclet.sf.net/" TARGET="other">XDoclet</A> under Ant
-lets you avoid writing so much code. Nor is a new release of Ant
-likely to provide a fundamental kick-start to the currently somewhat
-subdued technology and software industries.
-</P>
-<P>No, Ant1.6 will not fundamentally change your life. But if you do
-have to get software out on time -"roughly what you asked for,
-roughly when you asked", then Ant1.6 provides lots of little
-improvements over the existing version.
-</P>
-<P>Before we look at those details, lets look at the world of The
-Automated Build.</P>
-<P>Firstly, we'd like to thank everyone for all those awards that
-have been flowing in. The JavaWorld Editors' Choice Award for "Most
-Useful Java Community-Developed Technology", The Java
-Developer's Journal "Editors Choice Award", and Java Pro
-Reader's Choice award for "Most Valuable Java Deployment
-Technology." Wow. That's a lot of awards. Aardman Animations
-keep all their Wallace and Gromit -related oscars in a cabinet in
-their tea room. If the Apache organization had a tea room, those Ant
-awards would be forcing all the other (excellent) Apache products to
-fight hard for their cabinet space.
-</P>
-<P>All those awards come for a reason: everyone, at least everyone
-working on any project of moderate complexity, needs to control their
-build process. Ant is one of the best ways to do it in Java, and,
-over the past four years, it has moved from a tool used simply to
-build Tomcat cross-platform, to a tool used across many open source
-projects, and now to a tool used by almost all Java projects. Indeed,
-pretty much the only competitor in the Java space is a sibling
-project under the Apache banner, <A HREF="http://maven.apache.org/" TARGET="other">Maven</A>.
-One of the obvious signs of Ant's success is that all the popular
-IDEs, from the Open Source -Emacs JDE, Eclipse, NetBeans and jEdit -
-to the commercial: IntelliJ IDEA, Borland JBuilder- all ship with
-built in Ant support. This lets you use your favourite IDE for what
-it is good at: editing text, creating Java source, refactoring
-existing code, debugging and the like, and you can turn to Ant for
-co-ordinating the build-test-deploy/deliver process. That Ant based
-process can be triggered from keystrokes in the IDE, command line
-invocations for those so inclined, and in automated scheduled builds
-so the machines can keep an eye on the engineers. Another sign is how
-Ant is helping the Java aisle of bookstores fight back against
-attempts by books about Macromedia Flash to take over all the space
--there are now seven or eight books on the subject, with more on the
-way. Germany and Korea have their own native language books too,
-which shows how global the tool is -in use and in development terms.
-</P>
-<P>The other metric of success is the pre-announcement hints from our
-distant software colleagues in Redmond, Microsoft, of a new build
-tool, "MSBuild", which "might be the single most
-important feature innovation in our pipeline", according to one
-MS developer. That is surely the greatest metric of success: XML
-based build tools are now viewed as so essential to the modern build
-process, that Microsoft has to come up with a competitor to Ant to
-win Java developers over to .NET. Let's hope they discover we like
-ubiquitous JUnit testing too, and refactoring IDEs that create and
-run the tests for us.
-</P>
-<P>Success comes at a price, of course. One price is all those
-support calls. We try and stay on top of the bug reports, but one
-thing we cannot do is fix inconsistencies or things that seem like
-defects if they stand a significant chance of breaking existing
-builds. Its sad, but there are lots of little minor faults with Ant
-that we don't dare fix because, well, things might break. For
-example, why don't if= and unless= clauses also support
-<code>if="${property}"</code> clauses? Alternatively, why isn't it an
-error to use a property that isn't defined. Everyone that has ever
-seen directories called ${build.dir} popping up the source tree will
-understand why that behaviour is not always what you want. Well, we
-could fix these things, but we won't, because backwards compatibility
-is sacred.
-</P>
-<P>That is the other price of success: all those users who have
-existing build files they want to work. And all those IDEs that host
-Ant, and who want an easy upgrade to a new version. This means we
-have lost a lot of the flexibility we used to have in the early days
-of the project, when different versions of Ant could have completely
-different property evaluation algorithms and nobody would bat an
-eyelid. Now, even the most obscure bug fix ends up generating 'you
-broke my build complaints'.
-</P>
-<P>This explains why there will not be the 'incompatible upgrade'
-version of Ant, Ant2.0, that has long been discussed on our web site.
-</P>
-<H2>Where is Ant2.0?</H2>
-<P>For years we have been discussing Ant2.0, the complete rewrite
-version that would be cleaner and faster, and slightly incompatible
-with Ant1.x. It would be the opportunity to take the lessons from the
-1.x line, and support them cleanly. We even got as far as having
-multiple implementations of new Ant engines in the CVS repository,
-especially Mutant and Myrmidion. But we always seemed to have a hard
-time making progress -everyone was too busy using and firefighting
-Ant1.x that nobody got time to work on the 2.x codebase. Which is a
-shame, as all the proposals had interesting ideas.</P>
-<P>After Ant1.5 shipped, the future of Ant effectively resolved into
-one of evolution rather than revolution. There will be no Ant2.0 with
-a complete new engine underneath. There will be no need to run XSL
-transforms over existing build files to move them to the Ant2.0
-world. Instead Ant1.x is getting better underneath the build file
--improving its internal design while retaining five-nines backwards
-compatibility with existing build files.
-</P>
-<P>And that is what we have been up to.</P>
-<P>Under the hood, Ant1.6 contains some of the most major reworkings
-of the core Ant system yet seen. We haven't finished yet, and are
-holding back some of the more visible developments so we can see what
-works before their release in a product forces us to maintain them.
-But the underlying parts of Ant are now set up for the next stage in
-development.
-</P>
-<P>Whether we call the next version of Ant 1.7 or 2.0 is something we
-have yet to decide. Maybe we should call it 3.0 just to surprise
-people.</P>
-<H2>What has changed</H2>
-<P>Look at the <A HREF="WHATSNEW" TARGET="other">WHATSNEW</A>
-document to get a full list of changes. Here are some of the core
-conceptual differences.</P>
-<H3>No more Java1.1</H3>
-<P>We got fed up of jumping through reflection hoops to do everything
-from weak references to setting file timestamps. After consultation
-with the Ant user mail list, Ant1.6 only runs on Java1.2 or later. It
-can still cross compile to Java1.1 if that is what you have to do. We
-haven't completely purged all 1.1 references in the docs, or 1.1
-support from the source, but that will come over time.</P>
-<H3>New classloader use.</H3>
-<P>This is going to make people nervous. If there is one thing Java
-developers have learned over time, only the very naive, the very
-brave, or the very competent do things with classloaders. We will let
-the Ant users decide what category to put us in, but before everyone
-panics, Costin, of Tomcat fame, did a lot of the work here. You don't
-write application servers without understanding classloaders inside
-and out.
-</P>
-<P>The impact of these changes will trickle out over Ant versions. In
-1.6, the key features are
-</P>
-<OL>
- <LI><P>We have got rid of the bit in the batch file/shell script
- that built up a really big classpath environment variable from
- everything in ANT_HOME/lib. Now that is done in a launcher class
- that does the work then calls tools.ant.Main as before.</P>
- <LI><P>You can add new library directories to that classloader with
- the -lib option on the command line. This option is interpreted by
- the launcher class, so will not work with IDEs and other apps that
- use the inner entry point.</P>
- <LI><P>We have broken up optional.jar into many-many jar files, such
- as ant-commons-logging.jar, ant-xalan2.jar, etc etc, and a
- nodeps.jar for optional stuff without any dependencies. This creates
- a lot of jar files.</P>
- <LI><P>You can now <taskdef> existing tasks -like <junit>-
- by including the specific ant jar <I>and</I> the dependent libraries
- (i.e. junit.jar) in the declaration. This solves the problem of
- ANT_HOME/lib needing to contain every jar possibly needed by every
- user/project. You still have to declare the tasks one by one,
- something we will fix in Ant1.7</P>
-</OL>
-<H3>Adapters</H3>
-<P>These are Java classes that <I>adapt</I>> arbitrary Java
-classes into ant tasks or types. There has always been some of this
-stuff inside Ant, but now you can <taskdef> a task by naming
-not just the implementation class, but the adapter class. An adapter
-is essentially a meta task implementation -something that can be used
-to create new tasks dynamically. Which, when you consider that the
-core of Ant is fundamentally an XML to java mapping system and a
-simple workflow engine, may let you do very unusual things with Ant.
-</P>
-<H3>Antlib: Ant libraries</H3>
-<P>This is something we will expand in future. Till now you could
-declare tasks and types with <taskdef> and <typedef>. If
-they were in a jar, you could write a properties file and name the
-resource path of the file in the jar. If you wanted to have both
-tasks and types, you had name a shared classloader. If you wanted to
-add more things -such as conditions or mappers, you were out of luck.</P>
-<P>Antlibs are Ant Libraries, JAR files containing the code to extend
-Ant, and an XML description file to describe how Ant is extended.
-Before anyone panics at 'yet another XML descriptor syntax' to learn:
-you may already know the syntax. We call it "Ant build files".
-Actually it is a subset: it can only contain those task declarations
-that are derived from org.apache.tools.ant.taskdefs.AntlibDefinition.
-That includes <taskdef> and <typedef>, and <I>any other
-task you choose to derive. </I>We are experimenting with scripting
-and some kind of task predefinition declarations in antlibs. With the
-latter, you will be able to write a predefined task -such as a
-<javac> derivative with the compiler options set, and then use
-it any of your build files. This is all too experimental to get into
-Ant1.6 -expect it in the successor. For now, start using antlibs and
-use the <taskdef> task to load them into your projects.</P>
-<H3>XML Namespace aware</H3>
-<P>Ant finally adopts XML namespaces. This is to address build file
-scalability; antlibs can be imported into their own namespaces, and
-so you can avoid namespace clashes with other libraries. If you do
-not know what namespaces are, do not worry -they are not compulsory.</P>
-
-<h3>All tasks can go in at the toplevel</h3>
-<p>
-
-Prior to Ant1.6, only three tasks were allowed outside
-targets : <taskdef>,<typedef> and <property>.
-Ant 1.6 puts an end to this distinction; anything can go in at the top
-level. This is partly because there were many more tasks that merited the
-option based on the original rationale of "global initialization tasks":
-<import> and <antlib> were the new additions, but existing
-tasks like <condition>, <available>, <xmlproperties>
-and <loadproperties> had equal rights.
-</p>
-<p>
-Rather that expand the set slightly, now all tasks are allowed outside
-targets. This gives external tasks the same rights as built in code,
-eliminates sporadic bug reports, and annoying error messages. It gives
-users the ability to write build files without any targets at all; the
-top-level declarations are processed in sequence.
-</p>
-
-On a style note, we strongly advocate using this feature carefully. It
-is best if zero-side-effect, initialization-only tasks get put into the
-top level. Remember also that all top level statements are processed in
-order, before any targets are executed. Even tasks at the end of the
-file will get executed before targets declared above them.
-
-<H2>New Tasks</H2>
-<P>As usual, the task base is growing and expanding. These days the
-ant core is resisting adopting many of the highly worthy donations of
-tasks from people, because they make maintenance and firefighting
-worse. Our current stance is that except in special circumstances,
-Ant tasks to support third party open source projects, should live
-with the projects themselves. This keeps them in sync with the
-libraries they integrate with, avoids GPL/Apache licensing issues,
-and reduces the Ant team's support workload, letting them focus on
-the core. The antlib mechanism is intended to make it easier for
-people to load tasks from libraries for this very reason.</P>
-<P>That said, we are pleased to introduce many new tasks. Of
-particular interest may be the SSH tasks, which let one deploy code
-to remote servers securely. Now you really can do live updates with
-Ant -if the operations team will let you. The other one that is quite
-interesting is <subant>. This is an extension of the <ant>
-task, to take an entire fileset of directories and run their build
-files. This is incredibly useful in very large projects. This does
-not mean that we are advocating the many-build-file development
-pattern, but in a sufficiently complex project it happens anyway.
-<subant> keeps things manageable.</P>
-<H2>What else</H2>
-<P>So, what is new in Ant1.6? Lots of stuff. You will have to look at
-the <A HREF="WHATSNEW">whatsnew</A> file to see, but here are some
-key points.
-</P>
-<OL>
- <LI><P STYLE="margin-bottom: 0in">Bug fixes. We know, some things
- were broken in 1.5. In ant1.6 we have moved the bugs, fixing the
- ones we could, and no doubt adding different ones. Hopefully the
- total bug count has decreased.
- </P>
- <LI><P STYLE="margin-bottom: 0in">New platforms: Open VMS and HP's
- NonStop Kernel (Tandem) OS. OpenVMS is very different from the rest;
- Read the <exec> task documentation carefully.
- </P>
- <LI><P STYLE="margin-bottom: 0in">Spawning. <java> and <exec>
- started applications can outlive Ant if you set spawn=true. Note
- that the moment you do so, Ant cannot bind to their input or output,
- for obvious reasons.
- </P>
- <LI><P>Synchronisation with Java versions (heh, thought by moving
- javah's entry point that you could hide from us? Think again).</P>
- <LI><P>Synchronization with third party libraries. Of special note:
- we have moved to the Apache commons-net.jar, the successor to
- NetComponents for telnet and FTP as well as Apache BSF, the
- successor to IBM BSF, for script.</P>
-</OL>
-<P>There are many more enhancements, so we hope you will find your
-build projects easier. We have, as usual, jumped through hoops to
-keep existing builds working. If your build file stops working, and
-it isn't something listed on the 'changes that may break your build'
-part of the WHATSNEW file, or something we know about on bugzilla,
-please don't hesitate to file a new bug report, preferably one with a
-replicable test and a patch to fix the problem. Please, please,
-please, do a search on bugzilla first. You do not want to be the
-seventy-third person to complain that Ant1.6 doesn't do something
-that it should.
-</P>
-<P>Thanks,
-</P>
-<P>The Ant development team.
-</P>
-<H3>Acknowledgements</H3>
-<UL>
- <LI><P>Many thanks for Antoine to being the build manager for this
- release!
- </P>
- <LI><P>Thank you to everyone who supplies the components we use in
- Ant, particularly JUnit, commons-logging, log4J, bcel, ORO, Xerces, and Xalan.
- </P>
- <LI><P>Everyone who has supplied bug reports, especially those with
- patches and tests.</P>
- <LI><P>IDE projects who incorporate Ant into their products. Not
- only does this help Ant's success, you find lots of interesting
- integration defects. Special mention to the Eclipse team for fixing
- our memory leaks :)</P>
-</UL>
-<H3>Call to Action</H3>
-
-<P>
-
-It is an interesting time for Java. .NET is a serious challenger, and
-will get better. A core strength of Java over .NET is its community. It
-is the community that gave the world leading edge development tools and
-other core components: Ant, JUnit, XDoclet, hsqldb, Hibernate, Struts,
-etc. These things weren't created by JCP committees, or built according
-to the strategic vision of a Fortune 100 company. They were written by
-Java developers, for Java developers, usually to meet their own tactical
-goals.
-
-</P>
-
-<P>If Java is to survive -and we think it ought to- everyone who can
-needs to become active members of that community. It could be helping
-with Ant, but it could just as easily be helping with any other open
-source Java project, be hosted by Apache, FSF, Sourceforge or someone
-else, be it server-side, client-side or mobile-side. It could be an
-existing project, or it could be your own idea as to how things could
-be better. The key is: things will only be better if you put in the
-time to make it so.
-</P>
-<H3>Call to Inaction</H3>
-<P>A special message to whoever it is in charge of commands in
-tools.jar: stop moving your entry points! In Ant1.5 we had to deal
-with the 'classic' javac entry point going away in Java1.4.0,
-seemingly coming back later. In Java 1.4.2, the javah entry point
-moved. The traditional command line invocation mechanism has been
-replaced by hosted invocation -Ant, Maven, IDEs, etc, and moving
-entry points around breaks these host applications. Even if we get a
-bug fix out in Ant a few weeks after the Java release, it takes
-months for this to trickle down to end users, especially via IDEs and
-other distributions. For example, Sun's own Java Web Services
-Developer Pack ships with Ant1.5.1, and so cannot run <javah>
-on a 1.4.2 installation.
-</P>
-</BODY>
-</HTML>
\ No newline at end of file
+++ /dev/null
-<project name="jarjar-asm" default="package">
-
- <!-- If you need the 'jarjar' task, put lib/jarjar/jarjar-1.3.jar on the Ant classpath -->
- <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"/>
-
- <target name="package" description="Jarjar asm-NNN.jar and prefix package name with aj">
- <jarjar destfile="asm-9.1.renamed.jar">
- <zipfileset src="asm-9.1.jar" excludes="module-info.class"/>
- <rule pattern="org.objectweb.asm.**" result="aj.org.objectweb.asm.@1"/>
- </jarjar>
- </target>
-
-</project>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <title>JUnit 3.8.1</title>
-</head>
-<body>
- <h1>JUnit 3.8.1</h1>
- This contains an unmodified version of JUnit 3.8.1
- for setup convenience.
-
-</body>
-</html>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <!-- The AspectJ root POM is the parent, but this module is not a submodule -->
+ <parent>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectj-parent</artifactId>
+ <version>1.9.7.BUILD-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>lib</artifactId>
+
+ <name>AspectJ Test Libraries</name>
+ <description>
+ This module downloads + installs libraries used by many tests, especially those running as Ant jobs. You should not
+ build this module during every build because it is somewhat slow, downloading stuff from 3rd-party websites,
+ unzipping some libraries (e.g. a full Ant distribution) and creating new ZIP files (e.g. source JARs, compound JARs
+ containing multiple libraries).
+
+ So just run 'mvn compile' once after cloning the AspectJ repository and you should be all set to subsequently build
+ AspectJ itself. If you forget this step, a Maven Enforcer rule in the AspectJ root POM will fail the build and
+ remind you to build this module.
+
+ Normally you never have to call 'mvn clean' here, but if for some reason the installed libraries are in an
+ inconsistent state (e.g. after an incomplete download), you can do so and then run 'mvn compile' again.
+
+ BTW, running 'mvn compile' multiple times will not repeat any download via Maven Dependency or Download Maven
+ plugins, but repeat all zip/unzip steps in TrueZIP Maven plugin. So try not to call it unnecessarily.
+ </description>
+
+ <!-- TODO: Add lib (for now, then finally lib) to .gitignore -->
+
+ <properties>
+ <lib.ant.name>apache-ant</lib.ant.name>
+ <lib.ant.artifact>${lib.ant.name}-${lib.ant.version}</lib.ant.artifact>
+ </properties>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <!--
+ Deactivate this execution from the parent, because here it would be counter-productive, given the fact
+ that this module must be built before the enforcer rule can even pass elsewhere.
+ -->
+ <id>enforce-libraries-exist</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>com.googlecode.maven-download-plugin</groupId>
+ <artifactId>download-maven-plugin</artifactId>
+ <version>1.6.1</version>
+ <executions>
+ <execution>
+ <id>download-ant-binaries</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://archive.apache.org/dist/ant/binaries/${lib.ant.artifact}-bin.zip</url>
+ <outputDirectory>ant</outputDirectory>
+ <sha1>3fa9f816a0c4c63249efad8e6225f2e83794f0c0</sha1>
+ </configuration>
+ </execution>
+ <execution>
+ <id>download-ant-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://archive.apache.org/dist/ant/source/${lib.ant.artifact}-src.zip</url>
+ <outputDirectory>ant</outputDirectory>
+ <sha1>b9f3c8c31bb6c9069ad5b655059a17769af12f20</sha1>
+ </configuration>
+ </execution>
+ <execution>
+ <id>download-beanutils-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://github.com/apache/commons-beanutils/archive/refs/tags/${lib.commons.beanutils.tag}.zip</url>
+ <outputDirectory>commons</outputDirectory>
+ <outputFileName>commons-beanutils-${lib.commons.beanutils.version}-sources.jar</outputFileName>
+ <sha1>b2c02afe7e6475cd7c811932b8415d171a8afa00</sha1>
+ </configuration>
+ </execution>
+ <execution>
+ <id>download-collections-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://github.com/apache/commons-collections/archive/refs/tags/${lib.commons.collections.tag}.zip</url>
+ <outputDirectory>commons</outputDirectory>
+ <outputFileName>commons-collections-${lib.commons.collections.version}-sources.jar</outputFileName>
+ <sha1>824cacd0aafe21a94fb142388fd62f28a12df5ef</sha1>
+ </configuration>
+ </execution>
+ <execution>
+ <id>download-digester-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://github.com/apache/commons-digester/archive/refs/tags/${lib.commons.digester.tag}.zip</url>
+ <outputDirectory>commons</outputDirectory>
+ <outputFileName>commons-digester-${lib.commons.digester.version}-sources.jar</outputFileName>
+ <sha1>49f653c7ea726301c564f9662b72c051fee9390a</sha1>
+ </configuration>
+ </execution>
+ <execution>
+ <id>download-logging-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://github.com/apache/commons-logging/archive/refs/tags/${lib.commons.logging.tag}.zip</url>
+ <outputDirectory>commons</outputDirectory>
+ <outputFileName>commons-logging-${lib.commons.logging.version}-sources.jar</outputFileName>
+ <sha1>c61a373f6d50ff8fcfba900934f7254d44f9735b</sha1>
+ </configuration>
+ </execution>
+ <!--
+ Obsolete because we uploaded both binary and source JARs to GitHub Packages, so we can use JDiff as a
+ normal dependency. Keep this for reference, so we can remember where we found it.
+ -->
+ <!--
+ <execution>
+ <id>download-jdiff</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://downloads.sourceforge.net/project/jedit-plugins/JDiffPlugin/1.3/JDiffPlugin-1.3.zip</url>
+ <outputDirectory>jdiff</outputDirectory>
+ <outputFileName>JDiffPlugin-1.3.zip</outputFileName>
+ <sha1>eba63fd845203c6b245fbcb81c0de8e2c83d16c7</sha1>
+ </configuration>
+ </execution>
+ -->
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>3.1.2</version>
+ <executions>
+ <execution>
+ <id>copy</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+
+ <artifactItem>
+ <!-- Available from GitHub Packages (needs special repository declaration) -->
+ <groupId>org.aspectj</groupId>
+ <artifactId>org.eclipse.jdt.core</artifactId>
+ <version>${jdt.core.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>jdtcore-aj</outputDirectory>
+ <destFileName>jdtcore-for-aspectj.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Available from GitHub Packages (needs special repository declaration) -->
+ <groupId>org.aspectj</groupId>
+ <artifactId>org.eclipse.jdt.core</artifactId>
+ <version>${jdt.core.version}</version>
+ <type>java-source</type>
+ <classifier>sources</classifier>
+ <overWrite>false</overWrite>
+ <outputDirectory>jdtcore-aj</outputDirectory>
+ <destFileName>jdtcore-for-aspectj-src.zip</destFileName>
+ </artifactItem>
+
+ <artifactItem>
+ <!-- Available from GitHub Packages (needs special repository declaration) -->
+ <groupId>org.aspectj</groupId>
+ <artifactId>asm-renamed</artifactId>
+ <version>${asm.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>asm</outputDirectory>
+ <destFileName>asm-${asm.version}.renamed.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Available from GitHub Packages (needs special repository declaration) -->
+ <groupId>org.aspectj</groupId>
+ <artifactId>asm-renamed</artifactId>
+ <version>${asm.version}</version>
+ <type>java-source</type>
+ <classifier>sources</classifier>
+ <overWrite>false</overWrite>
+ <outputDirectory>asm</outputDirectory>
+ <destFileName>asm-${asm.version}.renamed-src.zip</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version in branch 'jdtcore-new' -->
+ <groupId>com.googlecode.jarjar</groupId>
+ <artifactId>jarjar</artifactId>
+ <version>1.3</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>jarjar</outputDirectory>
+ <destFileName>jarjar-1.3.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>junit</outputDirectory>
+ <destFileName>junit.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <!-- TODO: Is this redundant JUnit JAR in ant/lib really necessary? If so, why? -->
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>ant/lib</outputDirectory>
+ <destFileName>junit.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <type>jar</type>
+ <classifier>sources</classifier>
+ <overWrite>false</overWrite>
+ <outputDirectory>junit</outputDirectory>
+ <destFileName>junit-src.zip</destFileName>
+ </artifactItem>
+
+ <!-- Jython does not seem to be used anywhere in AspectJ -->
+
+ <artifactItem>
+ <!-- Binary is a bit newer than committed version, but produces identical results in 'docs' -->
+ <groupId>saxon</groupId>
+ <artifactId>saxon</artifactId>
+ <version>6.5.3</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>saxon</outputDirectory>
+ <destFileName>saxon.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <groupId>regexp</groupId>
+ <artifactId>regexp</artifactId>
+ <version>${lib.regexp.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>regexp</outputDirectory>
+ <destFileName>jakarta-regexp-1.2.jar</destFileName>
+ </artifactItem>
+
+ <!--
+ About commons.jar + commons-src.zip:
+ - Beanutils Binaries are commons-beanutils:commons-beanutils:1.4 (no sources on Maven Central, but
+ https://github.com/apache/commons-beanutils/archive/refs/tags/BEANUTILS_1_4.zip)
+ - Collections: Binaries are commons-collections:commons-collections:2.0 (no sources on Maven Central, but
+ https://github.com/apache/commons-collections/archive/refs/tags/collections-2.0.zip)
+ - Digester: Binaries are commons-digester:commons-digester:1.3 (no sources on Maven Central, but
+ https://github.com/apache/commons-digester/archive/refs/tags/DIGESTER_1_3.zip)
+ - Logging: Binaries are commons-logging:commons-logging:1.0.1 (no sources on Maven Central, but
+ https://github.com/apache/commons-logging/archive/refs/tags/LOGGING_1_0_1.zip)
+ -->
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <!-- TODO: not used anywhere -> remove -->
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>${lib.commons.beanutils.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>commons</outputDirectory>
+ <destFileName>commons-beanutils-${lib.commons.beanutils.version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <!-- TODO: not used anywhere -> remove -->
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>2.0</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>commons</outputDirectory>
+ <destFileName>commons-collections-2.0.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <!-- TODO: used in module 'testing' -->
+ <groupId>commons-digester</groupId>
+ <artifactId>commons-digester</artifactId>
+ <version>${lib.commons.digester.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>commons</outputDirectory>
+ <destFileName>commons-digester-${lib.commons.digester.version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- Binary is identical to committed version -->
+ <!-- TODO: used in modules 'org.aspectj.matcher' -->
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${lib.commons.logging.version}</version>
+ <type>jar</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>commons</outputDirectory>
+ <destFileName>commons-logging-${lib.commons.logging.version}.jar</destFileName>
+ </artifactItem>
+
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>truezip-maven-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <id>unzip-ant-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>ant/${lib.ant.artifact}-bin.zip/${lib.ant.artifact}</directory>
+ <outputDirectory>ant</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-ant-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>ant/${lib.ant.artifact}-src.zip/${lib.ant.artifact}/src/main</directory>
+ <outputDirectory>ant/ant-src.zip</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-beanutils-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-beanutils-${lib.commons.beanutils.version}.jar</directory>
+ <outputDirectory>commons/commons.jar</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-collections-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-collections-${lib.commons.collections.version}.jar</directory>
+ <outputDirectory>commons/commons.jar</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-digester-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-digester-${lib.commons.digester.version}.jar</directory>
+ <outputDirectory>commons/commons.jar</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-logging-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-logging-${lib.commons.logging.version}.jar</directory>
+ <outputDirectory>commons/commons.jar</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-beanutils-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-beanutils-${lib.commons.beanutils.version}-sources.jar/commons-beanutils-${lib.commons.beanutils.tag}/src/java</directory>
+ <outputDirectory>commons/commons-src.zip</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-collections-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-collections-${lib.commons.collections.version}-sources.jar/commons-collections-${lib.commons.collections.tag}/src/java</directory>
+ <outputDirectory>commons/commons-src.zip</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-digester-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-digester-${lib.commons.digester.version}-sources.jar/commons-digester-${lib.commons.digester.tag}/src/java</directory>
+ <outputDirectory>commons/commons-src.zip</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-logging-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <!--
+ This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
+ were normal file system paths. No additional moves and deletes with Antrun are necessary.
+ -->
+ <directory>commons/commons-logging-${lib.commons.logging.version}-sources.jar/commons-logging-${lib.commons.logging.tag}/src/java</directory>
+ <outputDirectory>commons/commons-src.zip</outputDirectory>
+ </fileset>
+ </configuration>
+ </execution>
+ <!--
+ Obsolete because we uploaded both binary and source JARs to GitHub Packages, so we can use JDiff as a normal
+ dependency. Keep this for reference, so we can remember how we built it. After download + zip the deployment
+ was made right from the lib/jdiff directory, using the following commands (without the line breaks):
+
+ mvn -Dfile=jdiff.jar -DrepositoryId=github -Durl=https://maven.pkg.github.com/kriegaex/aspectj-packages
+ -DgroupId=jdiff -DartifactId=jdiff -Dpackaging=jar -Dversion=1.3
+ deploy:deploy-file
+
+ mvn -Dfile=jdiff-src.zip -DrepositoryId=github -Durl=https://maven.pkg.github.com/kriegaex/aspectj-packages
+ -DgroupId=jdiff -DartifactId=jdiff -Dpackaging=jar -Dversion=1.3
+ -Dtypes=java-source -Dclassifier=sources
+ deploy:deploy-file
+
+ The second command yields an error, trying to re-upload a POM, but that is no problem because the POM would
+ be identical to the one already uploaded with the first command.
+ -->
+ <!--
+ <execution>
+ <id>zip-jdiff-binaries</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <directory>jdiff/JDiffPlugin-1.3.zip/JDiffPlugin.jar</directory>
+ <outputDirectory>jdiff/jdiff.jar</outputDirectory>
+ <includes>
+ <include>**/*.class</include>
+ </includes>
+ <excludes>
+ <exclude>jdiff/options/**</exclude>
+ <exclude>jdiff/*.class</exclude>
+ </excludes>
+ </fileset>
+ </configuration>
+ </execution>
+ <execution>
+ <id>zip-jdiff-sources</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <fileset>
+ <directory>jdiff/JDiffPlugin-1.3.zip/JDiffPlugin</directory>
+ <outputDirectory>jdiff/jdiff-src.zip</outputDirectory>
+ <includes>
+ <include>**/*.java</include>
+ </includes>
+ <excludes>
+ <exclude>jdiff/options/**</exclude>
+ <exclude>jdiff/*.java</exclude>
+ </excludes>
+ </fileset>
+ </configuration>
+ </execution>
+ -->
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>clean-up-libs</id>
+ <phase>clean</phase>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>.</directory>
+ <includes>
+ <include>ant/**</include>
+ <include>asm/**</include>
+ <include>commons/**</include>
+ <include>jarjar/**</include>
+ <!-- Obsolete because JDiff is on GitHub Packages now. Keep for reference. -->
+ <!--<include>jdiff/**</include>-->
+ <include>jdtcore-aj/**</include>
+ <include>junit/**</include>
+ <include>regexp/**</include>
+ <include>saxon/**</include>
+ </includes>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ </filesets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>asm-renamed</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>org.eclipse.jdt.core</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
-
- <!-- The AspectJ root POM is the parent, but this module is not a submodule -->
- <parent>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectj-parent</artifactId>
- <version>1.9.7.BUILD-SNAPSHOT</version>
- </parent>
-
- <artifactId>libx</artifactId>
-
- <name>AspectJ Test Libraries</name>
- <description>
- This module downloads + installs libraries used by many tests, especially those running as Ant jobs. You should not
- build this module during every build because it is somewhat slow, downloading stuff from 3rd-party websites,
- unzipping some libraries (e.g. a full Ant distribution) and creating new ZIP files (e.g. source JARs, compound JARs
- containing multiple libraries).
-
- So just run 'mvn compile' once after cloning the AspectJ repository and you should be all set to subsequently build
- AspectJ itself. If you forget this step, a Maven Enforcer rule in the AspectJ root POM will fail the build and
- remind you to build this module.
-
- Normally you never have to call 'mvn clean' here, but if for some reason the installed libraries are in an
- inconsistent state (e.g. after an incomplete download), you can do so and then run 'mvn compile' again.
-
- BTW, running 'mvn compile' multiple times will not repeat any download via Maven Dependency or Download Maven
- plugins, but repeat all zip/unzip steps in TrueZIP Maven plugin. So try not to call it unnecessarily.
- </description>
-
- <!-- TODO: Add libx (for now, then finally lib) to .gitignore -->
-
- <properties>
- <lib.ant.name>apache-ant</lib.ant.name>
- <lib.ant.artifact>${lib.ant.name}-${lib.ant.version}</lib.ant.artifact>
- </properties>
-
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <!--
- Deactivate this execution from the parent, because here it would be counter-productive, given the fact
- that this module must be built before the enforcer rule can even pass elsewhere.
- -->
- <id>enforce-libraries-exist</id>
- <phase>none</phase>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>com.googlecode.maven-download-plugin</groupId>
- <artifactId>download-maven-plugin</artifactId>
- <version>1.6.1</version>
- <executions>
- <execution>
- <id>download-ant-binaries</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://archive.apache.org/dist/ant/binaries/${lib.ant.artifact}-bin.zip</url>
- <outputDirectory>ant</outputDirectory>
- <sha1>3fa9f816a0c4c63249efad8e6225f2e83794f0c0</sha1>
- </configuration>
- </execution>
- <execution>
- <id>download-ant-sources</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://archive.apache.org/dist/ant/source/${lib.ant.artifact}-src.zip</url>
- <outputDirectory>ant</outputDirectory>
- <sha1>b9f3c8c31bb6c9069ad5b655059a17769af12f20</sha1>
- </configuration>
- </execution>
- <execution>
- <id>download-beanutils-sources</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://github.com/apache/commons-beanutils/archive/refs/tags/${lib.commons.beanutils.tag}.zip</url>
- <outputDirectory>commons</outputDirectory>
- <outputFileName>commons-beanutils-${lib.commons.beanutils.version}-sources.jar</outputFileName>
- <sha1>b2c02afe7e6475cd7c811932b8415d171a8afa00</sha1>
- </configuration>
- </execution>
- <execution>
- <id>download-collections-sources</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://github.com/apache/commons-collections/archive/refs/tags/${lib.commons.collections.tag}.zip</url>
- <outputDirectory>commons</outputDirectory>
- <outputFileName>commons-collections-${lib.commons.collections.version}-sources.jar</outputFileName>
- <sha1>824cacd0aafe21a94fb142388fd62f28a12df5ef</sha1>
- </configuration>
- </execution>
- <execution>
- <id>download-digester-sources</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://github.com/apache/commons-digester/archive/refs/tags/${lib.commons.digester.tag}.zip</url>
- <outputDirectory>commons</outputDirectory>
- <outputFileName>commons-digester-${lib.commons.digester.version}-sources.jar</outputFileName>
- <sha1>49f653c7ea726301c564f9662b72c051fee9390a</sha1>
- </configuration>
- </execution>
- <execution>
- <id>download-logging-sources</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://github.com/apache/commons-logging/archive/refs/tags/${lib.commons.logging.tag}.zip</url>
- <outputDirectory>commons</outputDirectory>
- <outputFileName>commons-logging-${lib.commons.logging.version}-sources.jar</outputFileName>
- <sha1>c61a373f6d50ff8fcfba900934f7254d44f9735b</sha1>
- </configuration>
- </execution>
- <!--
- Obsolete because we uploaded both binary and source JARs to GitHub Packages, so we can use JDiff as a
- normal dependency. Keep this for reference, so we can remember where we found it.
- -->
- <!--
- <execution>
- <id>download-jdiff</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://downloads.sourceforge.net/project/jedit-plugins/JDiffPlugin/1.3/JDiffPlugin-1.3.zip</url>
- <outputDirectory>jdiff</outputDirectory>
- <outputFileName>JDiffPlugin-1.3.zip</outputFileName>
- <sha1>eba63fd845203c6b245fbcb81c0de8e2c83d16c7</sha1>
- </configuration>
- </execution>
- -->
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>3.1.2</version>
- <executions>
- <execution>
- <id>copy</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <artifactItems>
-
- <artifactItem>
- <!-- Available from GitHub Packages (needs special repository declaration) -->
- <groupId>org.aspectj</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>${jdt.core.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>jdtcore-aj</outputDirectory>
- <destFileName>jdtcore-for-aspectj.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Available from GitHub Packages (needs special repository declaration) -->
- <groupId>org.aspectj</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>${jdt.core.version}</version>
- <type>java-source</type>
- <classifier>sources</classifier>
- <overWrite>false</overWrite>
- <outputDirectory>jdtcore-aj</outputDirectory>
- <destFileName>jdtcore-for-aspectj-src.zip</destFileName>
- </artifactItem>
-
- <artifactItem>
- <!-- Available from GitHub Packages (needs special repository declaration) -->
- <groupId>org.aspectj</groupId>
- <artifactId>asm-renamed</artifactId>
- <version>${asm.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>asm</outputDirectory>
- <destFileName>asm-${asm.version}.renamed.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Available from GitHub Packages (needs special repository declaration) -->
- <groupId>org.aspectj</groupId>
- <artifactId>asm-renamed</artifactId>
- <version>${asm.version}</version>
- <type>java-source</type>
- <classifier>sources</classifier>
- <overWrite>false</overWrite>
- <outputDirectory>asm</outputDirectory>
- <destFileName>asm-${asm.version}.renamed-src.zip</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version in branch 'jdtcore-new' -->
- <groupId>com.googlecode.jarjar</groupId>
- <artifactId>jarjar</artifactId>
- <version>1.3</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>jarjar</outputDirectory>
- <destFileName>jarjar-1.3.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>junit</outputDirectory>
- <destFileName>junit.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <!-- TODO: Is this redundant JUnit JAR in ant/lib really necessary? If so, why? -->
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>ant/lib</outputDirectory>
- <destFileName>junit.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <type>jar</type>
- <classifier>sources</classifier>
- <overWrite>false</overWrite>
- <outputDirectory>junit</outputDirectory>
- <destFileName>junit-src.zip</destFileName>
- </artifactItem>
-
- <!-- Jython does not seem to be used anywhere in AspectJ -->
-
- <artifactItem>
- <!-- Binary is a bit newer than committed version, but produces identical results in 'docs' -->
- <groupId>saxon</groupId>
- <artifactId>saxon</artifactId>
- <version>6.5.3</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>saxon</outputDirectory>
- <destFileName>saxon.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <groupId>regexp</groupId>
- <artifactId>regexp</artifactId>
- <version>${lib.regexp.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>regexp</outputDirectory>
- <destFileName>jakarta-regexp-1.2.jar</destFileName>
- </artifactItem>
-
- <!--
- About commons.jar + commons-src.zip:
- - Beanutils Binaries are commons-beanutils:commons-beanutils:1.4 (no sources on Maven Central, but
- https://github.com/apache/commons-beanutils/archive/refs/tags/BEANUTILS_1_4.zip)
- - Collections: Binaries are commons-collections:commons-collections:2.0 (no sources on Maven Central, but
- https://github.com/apache/commons-collections/archive/refs/tags/collections-2.0.zip)
- - Digester: Binaries are commons-digester:commons-digester:1.3 (no sources on Maven Central, but
- https://github.com/apache/commons-digester/archive/refs/tags/DIGESTER_1_3.zip)
- - Logging: Binaries are commons-logging:commons-logging:1.0.1 (no sources on Maven Central, but
- https://github.com/apache/commons-logging/archive/refs/tags/LOGGING_1_0_1.zip)
- -->
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <!-- TODO: not used anywhere -> remove -->
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>${lib.commons.beanutils.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>commons</outputDirectory>
- <destFileName>commons-beanutils-${lib.commons.beanutils.version}.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <!-- TODO: not used anywhere -> remove -->
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>2.0</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>commons</outputDirectory>
- <destFileName>commons-collections-2.0.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <!-- TODO: used in module 'testing' -->
- <groupId>commons-digester</groupId>
- <artifactId>commons-digester</artifactId>
- <version>${lib.commons.digester.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>commons</outputDirectory>
- <destFileName>commons-digester-${lib.commons.digester.version}.jar</destFileName>
- </artifactItem>
- <artifactItem>
- <!-- Binary is identical to committed version -->
- <!-- TODO: used in modules 'org.aspectj.matcher' -->
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${lib.commons.logging.version}</version>
- <type>jar</type>
- <overWrite>false</overWrite>
- <outputDirectory>commons</outputDirectory>
- <destFileName>commons-logging-${lib.commons.logging.version}.jar</destFileName>
- </artifactItem>
-
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>truezip-maven-plugin</artifactId>
- <version>1.2</version>
- <executions>
- <execution>
- <id>unzip-ant-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>ant/${lib.ant.artifact}-bin.zip/${lib.ant.artifact}</directory>
- <outputDirectory>ant</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-ant-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>ant/${lib.ant.artifact}-src.zip/${lib.ant.artifact}/src/main</directory>
- <outputDirectory>ant/ant-src.zip</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-beanutils-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-beanutils-${lib.commons.beanutils.version}.jar</directory>
- <outputDirectory>commons/commons.jar</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-collections-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-collections-${lib.commons.collections.version}.jar</directory>
- <outputDirectory>commons/commons.jar</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-digester-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-digester-${lib.commons.digester.version}.jar</directory>
- <outputDirectory>commons/commons.jar</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-logging-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-logging-${lib.commons.logging.version}.jar</directory>
- <outputDirectory>commons/commons.jar</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-beanutils-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-beanutils-${lib.commons.beanutils.version}-sources.jar/commons-beanutils-${lib.commons.beanutils.tag}/src/java</directory>
- <outputDirectory>commons/commons-src.zip</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-collections-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-collections-${lib.commons.collections.version}-sources.jar/commons-collections-${lib.commons.collections.tag}/src/java</directory>
- <outputDirectory>commons/commons-src.zip</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-digester-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-digester-${lib.commons.digester.version}-sources.jar/commons-digester-${lib.commons.digester.tag}/src/java</directory>
- <outputDirectory>commons/commons-src.zip</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-logging-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <!--
- This is why we use the TrueZIP plugin: It can seamlessly copy out of or into ZIP files as if they
- were normal file system paths. No additional moves and deletes with Antrun are necessary.
- -->
- <directory>commons/commons-logging-${lib.commons.logging.version}-sources.jar/commons-logging-${lib.commons.logging.tag}/src/java</directory>
- <outputDirectory>commons/commons-src.zip</outputDirectory>
- </fileset>
- </configuration>
- </execution>
- <!--
- Obsolete because we uploaded both binary and source JARs to GitHub Packages, so we can use JDiff as a normal
- dependency. Keep this for reference, so we can remember how we built it. After download + zip the deployment
- was made right from the libx/jdiff directory, using the following commands (without the line breaks):
-
- mvn -Dfile=jdiff.jar -DrepositoryId=github -Durl=https://maven.pkg.github.com/kriegaex/aspectj-packages
- -DgroupId=jdiff -DartifactId=jdiff -Dpackaging=jar -Dversion=1.3
- deploy:deploy-file
-
- mvn -Dfile=jdiff-src.zip -DrepositoryId=github -Durl=https://maven.pkg.github.com/kriegaex/aspectj-packages
- -DgroupId=jdiff -DartifactId=jdiff -Dpackaging=jar -Dversion=1.3
- -Dtypes=java-source -Dclassifier=sources
- deploy:deploy-file
-
- The second command yields an error, trying to re-upload a POM, but that is no problem because the POM would
- be identical to the one already uploaded with the first command.
- -->
- <!--
- <execution>
- <id>zip-jdiff-binaries</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <directory>jdiff/JDiffPlugin-1.3.zip/JDiffPlugin.jar</directory>
- <outputDirectory>jdiff/jdiff.jar</outputDirectory>
- <includes>
- <include>**/*.class</include>
- </includes>
- <excludes>
- <exclude>jdiff/options/**</exclude>
- <exclude>jdiff/*.class</exclude>
- </excludes>
- </fileset>
- </configuration>
- </execution>
- <execution>
- <id>zip-jdiff-sources</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <verbose>true</verbose>
- <fileset>
- <directory>jdiff/JDiffPlugin-1.3.zip/JDiffPlugin</directory>
- <outputDirectory>jdiff/jdiff-src.zip</outputDirectory>
- <includes>
- <include>**/*.java</include>
- </includes>
- <excludes>
- <exclude>jdiff/options/**</exclude>
- <exclude>jdiff/*.java</exclude>
- </excludes>
- </fileset>
- </configuration>
- </execution>
- -->
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-clean-plugin</artifactId>
- <executions>
- <execution>
- <id>clean-up-libs</id>
- <phase>clean</phase>
- <goals>
- <goal>clean</goal>
- </goals>
- <configuration>
- <filesets>
- <fileset>
- <directory>.</directory>
- <includes>
- <include>ant/**</include>
- <include>asm/**</include>
- <include>commons/**</include>
- <include>jarjar/**</include>
- <!-- Obsolete because JDiff is on GitHub Packages now. Keep for reference. -->
- <!--<include>jdiff/**</include>-->
- <include>jdtcore-aj/**</include>
- <include>junit/**</include>
- <include>regexp/**</include>
- <include>saxon/**</include>
- </includes>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
- </build>
-
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>asm-renamed</artifactId>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- </dependency>
- </dependencies>
-
-</project>
<lib.commons.logging.version>1.0.1</lib.commons.logging.version>
<lib.commons.logging.tag>LOGGING_1_0_1</lib.commons.logging.tag>
<asm.version>9.1</asm.version>
- <lib.directory>${maven.multiModuleProjectDirectory}/libx</lib.directory>
+ <lib.directory>${maven.multiModuleProjectDirectory}/lib</lib.directory>
</properties>
<repositories>
<!-- FYI: These are NOT meant to be sub-modules but a stand-alone projects built and deployed independently. -->
<!--
<module>asm-renamed</module>
- <module>libx</module>
+ <module>lib</module>
-->
<!-- create the important artifacts we care about -->
Maven Enforcer does not strip any whitespace or unindent, which looks quite ugly on the console.
-->
<message>
- Please go to module subdirectory 'libx' and run 'mvn compile' there. This should take care of downloading all necessary libraries to that directory, where some tests expect them to be.
+ Please go to module subdirectory 'lib' and run 'mvn compile' there. This should take care of downloading all necessary libraries to that directory, where some tests expect them to be.
</message>
<files>
<file>${lib.directory}/ant/bin/ant</file>
<path id="tools.libs">
<pathelement path="${aspectj.src}/lib/ant/lib/ant.jar"/>
<pathelement path="${aspectj.src}/lib/bcel/bcel.jar"/>
- <pathelement path="${aspectj.src}/libx/jdtcore-aj/jdtcore-for-aspectj.jar"/>
+ <pathelement path="${aspectj.src}/lib/jdtcore-aj/jdtcore-for-aspectj.jar"/>
</path>
</target>
<include name="*/bin" unless="ajtools.jar"/>
</dirset>
<fileset dir="${aspectj.workspace.root}">
- <include name="libx/jdtcore-aj/jdtcore-for-aspectj.jar" unless="ajtools.jar"/>
+ <include name="lib/jdtcore-aj/jdtcore-for-aspectj.jar" unless="ajtools.jar"/>
<include name="lib/bcel/bcel.jar" unless="ajtools.jar"/>
</fileset>
</path>