Zi is a maven plugin for clojure. It does something similar to clojure-maven-plugin, but does so differently.
It uses the maven pom sourceDirectory and testSourceDirectory settings to
locate source, which by default means that it uses src/main/clojure and
src/test/clojure. The goals should work with a pom.xml generated by
leiningen.
From an implementation perspecitve, most of the goals are written in clojure.
Zi requires maven 3.0.4.
- zi:resources
- zi:testResources
- zi:compile
- zi:ritz
- zi:ritz-nrepl
- zi:swank-clojure
- zi:test
- zi:codox
- zi:marginalia
- zi:ring-genfiles
Globally installing the plugin allows you to run the goals without modifying a project's pom file.
To globally enable the zi plugin, you need to add pluginGroup and
pluginRepository configuration to your ~/.m2/settings.xml file.
<pluginGroups>
<pluginGroup>org.cloudhoist.plugin</pluginGroup>
</pluginGroups> <profiles>
<profile>
<id>clojure-dev</id>
<pluginRepositories>
<pluginRepository>
<id>sonatype-snapshots</id>
<url>http://oss.sonatype.org/content/repositories/releases</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>clojure-dev</activeProfile>
</activeProfiles>To enable zi in a project pom, without globally enabling the plugin, you will
need to add a pluginRepositories entry to your pom:
<pluginRepositories>
<pluginRepository>
<id>sonatype-snapshots</id>
<url>http://oss.sonatype.org/content/repositories/releases</url>
</pluginRepository>
</pluginRepositories>It uses the maven pom sourceDirectory and testSourceDirectory settings to
locate source, which by default means that it uses src/main/clojure and
src/test/clojure.
The resources goal copies clojure source to the target. This is probably what you need to make sure that your clj source files end up in your jar file.
<build>
<plugins>
<plugin>
<groupId>org.cloudhoist.plugin</groupId>
<artifactId>zi</artifactId>
<version>0.5.5</version>
<executions>
<execution>
<id>default-resources</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>The testResources goal copies clojure test source to the target. This is probably what you need to make sure that your clj source files end up in your test-jar file.
<build>
<plugins>
<plugin>
<groupId>org.cloudhoist.plugin</groupId>
<artifactId>zi</artifactId>
<version>0.5.5</version>
<executions>
<execution>
<id>default-test-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>test-resources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>The compile goal AOT compiles clojure source.
<build>
<plugins>
<plugin>
<groupId>org.cloudhoist.plugin</groupId>
<artifactId>zi</artifactId>
<version>0.5.5</version>
<executions>
<execution>
<id>default-compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/test.clj</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>| Property | Variable | Default | Description |
|---|---|---|---|
| includes | **/*.clj | A set of source patterns to include | |
| excludes | A set of source patterns to exclude |
The ritz goal starts a ritz server.
| Property | Variable | Default | Description |
|---|---|---|---|
| port | clojure.swank.port | 4005 | The swank server port |
| encoding | clojure.swank.encoding | iso-8859-1 | The swank encoding to use |
The ritz, ritz-nrepl and swank-clojure goals all recognise sub-projects linked in a checkouts directory, and adds their sources and resources to the the classpath.
The ritz and ritz-nrepl goals also adds source jars to the classpath if they are
available in the local repository. You can resolve the source jars using mvn dependency:sources.
The ritz-nrepl goal starts a ritz nREPL server.
| Property | Variable | Default | Description |
|---|---|---|---|
| port | clojure.nrepl.port | 4005 | The nrepl server port |
The swank-clojure goal starts a swank-clojure server.
| Property | Variable | Default | Description |
|---|---|---|---|
| port | clojure.swank.port | 4005 | The swank server port |
| encoding | clojure.swank.encoding | iso-8859-1 | The swank encoding to use |
The test goal runs clojure.test tests.
| Property | Variable | Default | Description |
|---|---|---|---|
| initScript | clojure.initScript | A clojure source string that is run before the tests |
The codox goal creates codox generated API documentation in the doc directory.
| Property | Variable | Default | Description |
|---|---|---|---|
| codoxTargetDirectory | ${project.build.directory}/doc | The directory where codox should write its output |
The marginalia goal creates a marginalia annotated source page.
| Property | Variable | Default | Description |
|---|---|---|---|
| marginaliaTargetDirectory | ${project.build.directory} | The directory where marginalia should write uberdoc.html |
The ring-genfiles goal creates files required for a war packaging. See lein-ring plugin.
| Property | Default | Description |
|---|---|---|
| ringServletClass | The name of the servlet class | |
| ringServletName | The name of the servlet | |
| ringListenerClass | The name of the ServletContextListener class | |
| ringHandler | The name of the ring handler | |
| ringInit | The name of an initialisation hook function | |
| ringDestroy | The name of a shutdown hook function | |
| ringUrlPattern | The url pattern of the servlet mapping (in web.xml). Defaults to "/*". |
Zi was a builder in northern mythology.
Licensed under EPL
Copyright 2011 Hugo Duncan.