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 configuraiton, 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