Releasing Hibernate Search




    • JDK 8 (Required for the build, but still aiming at Java 7 compatibility)
    • Maven 3.3.3
    • Maven configured to use the JBoss repositories, with permissions to upload. Make sure your settings.xml is configured accordingly.


    Release process


    To prepare and release a new version of Hibernate Search follow these steps (executed against the branch you intend to release):




    • Verify the project status
      • Make sure there are no outstanding issues in JIRA
      • Verify the tests and artifacts:
        > mvn clean install -Pdocbook,dist,perf -s settings-example.xml
      • Check the distribution package as built by Maven (distribution/target/hibernate-search-<version>-dist). Especially check the jar files in the subdirectories:
        • optional
        • required
        • provided

                    They should contain the appropriate dependencies, without duplicates. The creation of these directories is driven by the assembly plugin (distribution/src/main/assembly/dist.xml) which is very specific and

                    might break with the inclusion of new dependencies. The root directory of the distribution should contain the hibernate-search-<version>.jar and hibernate-search-infinispan-<version>.jar. You can get a list of the

                    included jars by for example running:  find distribution/target/hibernate-search-<version>-dist -name "*.jar" | awk 'BEGIN { FS = "/" } ; {print $8 "\t" $7}'  | sort




    • Release the version on JIRA
    • Update the changelog.txt in project root from JIRA's release notes
    • Verify readme.txt :
      • is containing up to date information
      • contained links are not broken
      • current date and version number at the header of the readme.txt
    • Commit any outstanding changes
    • Tag and build the release using the maven release plugin. During release:prepare you will have to specify the tag name and release version.
      > mvn -B release:clean release:prepare release:perform -Pdocbook,dist,perf -Dtag=X -DreleaseVersion=Y -DdevelopmentVersion=Z
      Note: It is important to activate ALL module profiles manually in release:perform. Otherwise the non activated module POMs will not get transformed.
    • Log in to Nexus and close the temporary staging repository. See more details about using the staging repository here.
    • Test the release in the staging repository. If there is a problem, drop the staging repo, fix the problem, delete your local git commits containing the tag and start over. If everything is ok, promote the staging repo to the releases repository.
    • The mvn release command performed earlier is configured to not push anything to upstream: the Tag exists only in your local fork: if Nexus successfully closed the repository, push your branch to upstream and then push the tag as well.
      > git push upstream HEAD
      > git push upstream  <release-version>
    • If it's a final release, create maintenance branches for the previous version.
      • mvn versions:set -DnewVersion=A.B.C-SNAPSHOT
      • git add, commit, push upstream the new branch.




      • Upload the distribution packages to SourceForge. You need to be member of the Hibernate project team of Sourceforge to do that. See Sourceforge instructions: Release Files for Download.
        • Copy the changelog.txt (in target/checkout/distribution/target/hibernate-search-<version>-dist)
        • Copy the readme.txt (in target/checkout/distribution/target/hibernate-search-<version>-dist)
        • Copy the zip distribution (in target/checkout/distribution/target)
        • Copy the tar.gz distribution (in target/checkout/distribution/target)
        • Copy the zip containing the JBoss Modules (in target/checkout/modules/target)
      • Close all resolved JIRA issues
      • Upload the documentation to You should be able to use rsync to get the documentation via (provided you are in the docs directory of the unpacked distribution):
        rsync -rzh --progress --delete --protocol=28 docs/ hibernate<at><version>
      • If it is the latest stable release you should also overwrite the "stable docs" URLs:
        rsync -rzh --progress --delete --protocol=28 docs/