/objenesis

Okay, it's pretty easy to instantiate objects in Java through standard reflection. However there are many cases where you need to go beyond what reflection provides. For example, if there's no public constructor, you want to bypass the constructor code, or set final fields. There are numerous clever (but fiddly) approaches to getting around this and this library provides a simple way to get at them. You will find the official site here.

Primary LanguageJavaApache License 2.0Apache-2.0

Objenesis

Objenesis is a library dedicated to bypass the constructor when creating an object. On any JVM there is.

You can find the website and user documentation at http://objenesis.org.

Developer information

Travis status

Build Status

Environment setup

I'm using:

  • Maven 3.3.9
  • IntelliJ 15 Ultimate (thanks to JetBrains for the license) (it should also work with Eclipse)

To configure your local workspace:

  • Import the Maven parent project to Eclipse or IntelliJ
  • Import the Eclipse formatting file objenesis-formatting.xml (usable in Eclipse or IntelliJ)

To build with Maven

There are two different levels of build.

Build without any active profile

It is a basic compilation of the application.

mvn install

Full build

This build will create the source and javadoc jars and run findbugs.

mvn install -Pfull

To run special builds

Run the Android TCK

  • Install the Android SDK
  • Configure a device (real or simulated)
  • Add an ANDROID_HOME to target the Android SDK
  • Add $ANDROID_HOME/platform-tools to your path
  • Activate the debug mode if it's a real device
  • mvn package -Pandroid

Run the benchmarks

mvn package -Pbenchmark
cd benchmark
./launch.sh

Generate the website

mvn package -Pwebsite

To update the versions

  • mvn versions:set -DnewVersion=X.Y -Pall
  • mvn versions:commit -Pall if everything is ok, mvn versions:revert -Pall otherwise

Configure to deploy to the Sonatype maven repository

  • You will first need to add something like this to your settings.xml
<servers>
  <server>
    <id>sonatype-nexus-snapshots</id>
    <username>sonatypeuser</username>
    <password>sonatypepassword</password>
  </server>
  <server>
    <id>sonatype-nexus-staging</id>
    <username>sonatypeuser</username>
    <password>sonatypepassword</password>
  </server>
</servers>
  • Then follow the instructions from the site below to create your key to sign the deployed items

http://www.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/

To check dependencies and plugins versions

mvn versions:display-dependency-updates versions:display-plugin-updates -Pall

To update the license

mvn validate license:format -Pall

To release

  • Add the release notes in website/site/content/notes.html
  • Add this server to your settings.xml
<server>
   <id>bintray</id>
   <username>your-user-name</username>
   <password>your-api-key</password>
</server> 
  • Set gpg_passphrase, bintray_api_key and bintray_user environment variables
  • Launch an Android device (virtual or physical)
  • Add release notes on the tag in GitHub
  • Launch ./deploy.sh version
  • Answer the questions (normally, just acknowledge the proposed default)
  • Flag the bin, tck and tck-android as "Show in download list" in bintray
  • Add the bin, tck and tck-android jars to the release in GitHub
  • Close the milestone in GitHub and create the new one
  • Go to https://bintray.com/easymock/maven/objenesis to publish the Maven artifacts
  • Sync to Maven central

Deploy the website

  • Make sure the pom is at the version you want to release
  • Launch ./deploy_website.sh