Building a JRadius Dictionary

In JRadius, known attributes are represented by Java classes. The source for these classes is generated based on FreeRADIUS style dictionary files.

In a shell

Included in the binary distributions is a script called build_dictionary.sh. It looks something like:

 #!/bin/sh
 cd `dirname $0`
 pwd=$(pwd)
 classpath=".:$pwd/lib"
 
 # pickup jradius-core into classpath
 for jar in $pwd/lib/*jradius-core*.jar; do
   classpath="$classpath:$jar" 
 done
 
 # generate source
 CLASSPATH="$classpath" java net.jradius.freeradius.RadiusDictionary net.jradius.dictionary share tmp-dictionary
 
 # compile and jar
 (cd tmp-dictionary
  find . -name \*.java -print > file.list
  echo "Compiling $(wc -l file.list) classes"
  CLASSPATH="$classpath" javac @file.list
  echo "Creating jar jradius-dictionary.jar"
  find . -name \*.class -print > class.list
  jar cf ../jradius-dictionary.jar @class.list
 )

In Maven

  <build>
    <sourceDirectory>target/dictionary-src</sourceDirectory>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <configuration>            
              <tasks>
                <java fork="false" classname="net.jradius.freeradius.RadiusDictionary" 
                   maxmemory="800m" failonerror="true"> 
                  <classpath>
                    <path refid="maven.compile.classpath" />
                  </classpath>
                  <arg value="net.jradius.dictionary" />
                  <arg value="${basedir}/../freeradius/dict" />
                  <arg value="${basedir}/target/dictionary-src" />
                </java>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

Put the above in your project pom.xml