Architecture-Rules 2.1.0 on the Horizon
Architecture Rules has been progressing. After 5 releases under 2.0.x, we have a tentative road map for the next release, slated to to hold the 2.1.0 tag. Here are some of the upcoming features you can look for.
Maven Plugin
Mykola has been working hard on the maven-architecture-rules-plugin. With it, you will no longer even need to write a unit test. Just write your architecture-rules.xml, and attach the appropriate goal to Maven’s test phase. He has been tackling multi project projects recently. This is sure to make asserting your architecture even easier for Maven users.
Maven repository
Speaking of Maven users, development of Architecture Rules relies on Maven. Today, to use Architecture Rules, you’d have to download the Architecture Rules jar and put it on your own repository, or your lib directory. This is too much work and we shouldn’t expect you to have to do that. We are going to get the jars and sources up into a Google Code hosted repository so you can just declare the dependency and repository in your pom.xml and get started even faster. In fact, we already have it up, its just not documented yet. Here is the first public mention of it.
Just add this repository:
<repository> <id>architect-rules-repo</id> <name>architecture-rules repository</name> <layout>default</layout> <url>http://architecturerules.googlecode.com/svn/maven2</url> <releases> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <checksumPolicy>ignore</checksumPolicy> </snapshots> </repository>
And this dependency:
<groupId>com.seventytwomiles</groupId> <artifactId>architecture-rules</artifactId> <version>2.0.3</version>
Java 5
We think its pretty safe to assume our users are up to Java 5 now, so we are going to update the code base to Java 5. This also makes it easier for us to integrate the maven-architecture-rules-plugin. If you are not up to Java 5, the greatest version you will be able to use is 2.0.3, which is a good release and should do the trick for you.
Configuration Chaining
Finally, rather trivial in the whole scheme of things, but if you opted to use the programmatic configuration over the recommended XML configuration, then we’re going to slightly modify the Configuration class to allow for chaining. So instead of:
Configuration configuration = new Configuration(); configuration.addRule(rule1); configuration.addRule(rule2); configuration.addRule(rule3);
You can use:
Configuration configuration = new Configuration() .addRule(rule1) .addRule(rule2) .addRule(rule3);
This is going to be great once you see an example where you add all of your rules, add all the package locations, and set up the other options.
So thats what we have been working on at Architecture Rules
Architecture-Rules 2.0.3
We released architecture-rules-2.0.3 last month.
Changes
- issue-23 determine which dependencies are optional usability
- issue-24 slashes in unix and windows are different, paths can not be read usability
- issue-25 cycles test not run with XML configuration usability
- release notes
We have already fixed a couple of issue for the next release, and completed a handful of tasks that have made improvements to the library. We have been getting a lot of help from mykola.nickishov. Since he was submitting so many quality patches, we invited him to join the project as a committer. He he accepted. Thanks Mykola.
We’ll make a release soon which will describe how to setup your pom.xml to pull down Architecture-Rules automatically, and enhance the CyclicReduendencyException message to point out the exact classes that are involved in the cycles, rather that just reporting on the package. If you can’t wait until the next release for these features, the subversion trunk has historically been stable, so you can checkout the project from source.

