Basic Customization > Windchill Customization Basics > Managing Customizations > Best Practices for Customizing Files Supplied by PTC > Managing Client JAR Files > Re-using an Existing Root JAR > Updating Client JARs At Maintenance Releases
  
Updating Client JARs At Maintenance Releases
Because of the inclusion of DSU JARs in the logical JARs, clients only have to download resources that were added or changed as part of the maintenance release (plus new root head jars), not the entire set of client JARs.
The process of rebuilding the client JARs at a maintenance release has been automated via the following command (note that this command rebuilds Customization JARs when necessitated by new or updated DSU JARs):
ant -f MakeJar.xml dsuUpdate
This command executes the following targets:
createCodebaseDsuBOM: Takes entries in codebase/../*_bom.txt BOM files which are in codebase and places them in jarContents/DSU.bom, but written relative to codebase (i.e. it removes "codebase/" from each entry).
updateDSUIncludes: Intersects each FCS .includes file with jarContents/DSU.bom and adds the intersection to the corresponding DSU .includes file.
updateCustIncludes: Intersects each FCS .includes and DSU .includes file pair with jarContents/Cust.bom and adds the intersection to the corresponding Customization .includes file
expandJarLocales: For resource bundles represented by _en localization in DSU and FCS .includes, places other localizations requested in jarContents/clientJarLocales into Customization .includes
removeNonexistantDsuAndCustEntries: Removes any entries from the Customization and DSU .includes files which are not found in codebase.
buildDSUClientJars: Rebuilds all DSU and Customization jar components. Also builds all indexed head jars which are parents (directly or indirectly) of these jars.
The only steps omitted by dsuUpdate for the Foundation resources and jars are:
The addition of any new DSU jar entries required for reasons other than being in the intersection of the DSU BOM and FCS jar contents (e.g. previously missed entries, new classes, etc).
The inclusion of a codebase/../*_bom.txt file containing the files changed by the DSU.
These should both be provided (e.g. as updated DSU .includes files and a foo_bom.txt file) as part of the maintenance release itself.
Updating Client JARs for Customizations
The Customization JAR components exist to allow customization additions and overrides to the out-of-the-box JAR sets as these components take load precedence over the corresponding DSU and FCS components.
A customer or customizer can add entries to any Customization .includes files they want and rebuild the corresponding JAR via:
ant -f MakeJar.xml buildCustClientJars
-DlogicalJarNames=jar1,jar2,…
where “jar1,jar2,…” should be replaced by the list of logical JARs whose Customization components should be rebuilt.
More often, however, the customer is likely to have a number of files they have overridden and simply wish to have the client JARs updated to account for this. This can be done by listing the overridden/customized files in codebase/jarContents/Cust.bom and then executing the command:
ant -f MakeJar.xml custUpdate
This command executes the following targets:
updateCustIncludes: Intersects each FCS .includes and DSU .includes file pair with jarContents/Cust.bom and adds the intersection to the corresponding Customization .includes file. Note that Cust.bom contains a few of the most volatile entries (e.g. properties files regenerated during code generation) initially out-of-the-box.
expandJarLocales: For resource bundles represented by _en localization in DSU and FCS .includes, places other localizations requested in jarContents/clientJarLocales into Customization .includes
buildCustClientJars: Re-builds all Customization JAR components. Also, builds all indexed head JARs which are parents (directly or indirectly) of these JARs.
Additionally more extensive client customizations can be supported by proceeding to build new client JAR sets in much the same way as was described for the previous sections.