Searching for build.xml ... Buildfile: /Users/paul/macker/doc/example/layering/build.xml prepare: build-macker-jar: compile: explain: ________________________________________________________________________________ This example shows how Macker might check a layered/n-tier architecture. The code contains a program with UI, model, and persistence layers. Each is supposed to talk to the next layer down; in addition, anybody on the outside can talk to the model. The example code contains a problem: the thoughtless author of the model layer is passing through exceptions from the persistence layer, forcing the GUI to illegally reference PersistenceException. You can fool around with the various ways one might fix this problem, namely: * Declare a new model-level exception, and wrap PersistenceException in it. * Make PersistenceException extend RuntimeException, and stop checking it. * Declare a special exception to Macker's rules for exceptions. I don't necessarily endorse all of these as aesthetically valid options, but Macker can deal with them all! If, for some absurd reason, you want to run this example, you need to edit conf/db.properties and then put the conf directory in your classpath. You also need to create a table named "thinger" with one varchar(255) column, "name". ________________________________________________________________________________ macker: (Checking ruleset: Layering rules ...) Only the model can talk to the persistence layer Illegal reference from net.innig.macker.example.layering.gui.ThingerUI to net.innig.macker.example.layering.persistence.PersistenceException (1 error) Macker rules checking failed BUILD FAILED file:/Users/paul/macker/doc/example/build-shared.xml:45: Macker rules checking failed Total time: 8 seconds