Deprecation

This document is DEPRECATED.

Please consider any information here as out of date. DO NOT use this document.

Instead, refer to http://infinispan.org/documentation.

Please update your bookmarks accordingly.

Skip to end of metadata
Go to start of metadata

Infinispan uses Maven as a build system.

Requirements

  • Java 6.0 or above
  • Maven 3 or above
Make sure you follow the steps outlined in Maven Getting Started - Users to set up your JBoss repository correctly. This step is crucial to ensure your Maven setup can locate JBoss artifacts! If you also want to test the EAP integration modules you should also add the appropriate Enterprise Red Hat Maven Repository.

The following is an example settings.xml to get you started:

Quick command reference

Maven places it's output in target/
mvn clean Cleans out any old builds and binaries
mvn compile Compiles java source code
mvn test Runs the TestNG unit test suite on the compiled code. Will also compile the tests. See the testing section below for more information on running different test groups. The default test group run is the "unit" group.
mvn package Packages the module as a JAR file, the resulting JAR file will be in target/
mvn package -Dmaven.test.skip.exec=true Creates a JAR file without running tests
mvn package -Dmaven.test.skip.exec=true -P minimal-distribution Creates a reduced version of the distribution with all modules,scripts...etc but no javadoc or source code. This is very handy to quickly build the distribution in order to run some tests.
mvn install -Dmaven.test.skip.exec=true Installs the artifacts in your local repo for use by other projects/modules, including inter-module dependencies within the same project.
mvn install -P distribution In addition to install, will also use Maven's assembly plugin to build ZIP files for distribution (in target/distribution). Contents of various distribution are controlled by the files in src/main/resources/assemblies.
mvn deploy Builds and deploy the project to the JBoss snapshots repository.
mvn -Pgenerate-schema-doc install -DskipTests=true -pl core && firefox core/target/xsd_doc Builds the configuration reference HTML file
mvn install -P-extras Avoids the extras profile disables the enforce plugin, generation of source jars and OSGI bundleconstruction, hence making builds run faster. Clearly, this option should not be used when making a release or publishing a snapshot.
For non-snapshot releases (e.g., alphas, betas, release candidates and final releases) you should use the bin/release.py script.

Publishing releases to Maven

To be able to publish releases to Maven, you need to have the following in your ${HOME}/.m2/settings.xml file:

Publishing snapshots

Simply running

in the Infinispan root directory will deploy a snapshot.

Publishing releases

Use the bin/release.py script.

The Maven Archetypes

Infinispan currently has 2 separate Maven archetypes you can use to create a skeleton project and get started using Infinispan. This is an easy way to get started using Infinispan as the archetype generates sample code, a sample Maven pom.xml with necessary depedencies, etc.

You don't need to have any experience with or knowledge of Maven's Archetypes to use this!  Just follow the simple steps below.
These archetypes have only been tested with Maven 3.  Please report back if you have any success with using Maven 2.

Starting a new project

Use the newproject-archetype project.  The simple command below will get you started, and

You will be prompted for a few things, including the artifactId , groupId and version of your new project. And that's it - you're ready to go!

Exploring your new project

The skeleton project ships with a sample application class for interacting with Infinispan. You can open this new project in your IDE - most good IDEs such as IntelliJ and Eclipse allow you to import Maven projects, see this guide and this guide.  Once you open your project in your IDE, you should examine the generated classes and read through the comments.

On the command line...

Try running

in your newly generated project. This runs the main() method in the generated application class.

Writing a test case for Infinispan

This archetype is useful if you wish to contribute a test to the Infinispan project and helps you get set up to use Infinispan's testing harness and related tools.

Use

As above, this will prompt you for project details and again as above, you should open this project in your IDE. Once you have done so, you will see some sample tests written for Infinispan making use of Infinispan's test harness and testing tools along with extensive comments and links for further reading.

On the command line...

Try running

in your newly generated project to run your tests.

The generated project has a few different profiles you can use as well, using Maven's -P flag. For example:

Available profiles

The profiles available in the generated sample project are:

  • udp: use UDP for network communications rather than TCP
  • tcp: use TCP for network communications rather than UDP
  • jbosstm: Use the embedded JBoss Transaction Manager rather than Infinispan's dummy test transaction manager

Contributing tests back to Infinispan

If you have written a functional, unit or stress test for Infinispan and want to contribute this back to Infinispan, your best bet is to fork the Infinispan sources on GitHub. The test you would have prototyped and tested in an isolated project created using this archetype can be simply dropped in to Infinispan's test suite. Make your changes, add your test, prove that it fails even on Infinispan's upstream source tree and issue a pull request.

{tip:title=New to working with Infinispan and GitHub?

Want to know how best to work with the repositories and contribute code?  Read [Infinispan and Git]

Versions

The archetypes generate poms with dependencies to specific versions of Infinispan. You should edit these generated poms by hand to point to other versions of Infinispan that you are interested in.

Source Code

The source code used to generate these archetypes are on GitHub. If you wish to enhance and contribute back to the project, fork away!

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Jul 29, 2011

    To be able to compile infinispan 5.0.0 I had to add this oracle repo into settings.xml in .m2 directory.

    <settings>
      <profiles>
        <profile>
          <id>oracleReleases</id>
          <repositories> <!-oracle maven repository->
            <repository>
               <id>oracleReleases</id>
               <name>Oracle Released Java Packages</name>
               <url>http://download.oracle.com/maven</url>
               <layout>default</layout>
            </repository>
          </repositories>
        </profile>
      </profiles>
      <activeProfiles>
        <activeProfile>default</activeProfile>
        <activeProfile>oracleReleases</activeProfile>
      </activeProfiles>
    </settings>

    To be able to compile the 4.2.x branch I had to copy repositories from 5.0.0. The Scala repositories doesn't work anymore.

  2. Feb 15, 2013

    Has anybody been able to compile Inifinispan v5.2.1Final?

    Every time I try to compile it I get a bunch of "incompatible types" errors building infinispan-core on org/infinispan/jmx/annotations/ManagedAttribute.java for classes that exist in infinispan-core. Looking at the dependency tree I don't see where it could be getting any incompatible org.inifinispan.[anything] as they would all have to come from the local source tree (where it definitely exists).

    Example:

    [ERROR] /home/me/infinispan/core/src/main/java/org/infinispan/jmx/annotations/ManagedAttribute.java:[48,40] incompatible types
    [ERROR] found   : org.infinispan.jmx.annotations.DataType
    [ERROR] required: org.infinispan.jmx.annotations.DataType