The triava project contains several of trivago's core libraries for Java-based projects: caching, collections, annotations, concurrency libraries and more.
TriavaCache (short: tcache) is fully JCache / JSR107 (Java Caching) compliant. More information on tcache:
- JSR107 compliance: See TCK information and https://jcp.org/aboutJava/communityprocess/implementations/jsr107/index.html
- Blog post: https://tech.trivago.com/2015/10/15/tcache/
- Talk on FROsCon : https://programm.froscon.de/2016/events/1803.html
Licensed under the Apache License, Version 2.0
To start, look at the examples folder. Further interesting examples are in the tcache unit test folder and util unit test folder.
triava is available from Maven Central
<dependencies>
<dependency>
<groupId>com.trivago</groupId>
<artifactId>triava</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
dependencies {
compile 'com.trivago:triava:2.0.1'
}
See Changelog
triava requires Java 8 and depends on the JSR107 API javax.cache:cache-api:1.0.0. Dependencies are resolved by Maven. The following will build everything, including Javadoc and a source jar:
mvn package
This will create three artifacts in the target/ folder:
- triava-[version].jar
- triava-[version]-sources.jar
- triava-[version]-javadoc.jar
Maintainers can upload new versions to Maven Central Staging:
Before uploading a new version, you should:
- Fix all Javadocs warnings
- Run long tests from package com.trivago.triava.tcache.integration manually
- Run FindBugs and fix all bugs
- Check for missing licensing header
find . -name '*.java' ! -path './src/test/java/com/trivago/triava/tcache/tmp/*' -print0 | xargs -0 grep -L "Licensed under the Apache License, Version 2.0"
- Release notes and versioning
- Update Changelog
- Update pom.xml with version number
- Update this README: Update all version numbers
- Commit changes
- Upload to Maven Central (check with maintainers on details, e.g. in the triava Knowledge page)
- Tag the release, if the release is good
mvn clean deploy -P release
version=2.0.1; git tag -a v$version -m "v$version"
git push --tags
Have a look at the examples folder.