Need help with objenesis?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

easymock
454 Stars 79 Forks Apache License 2.0 649 Commits 8 Opened issues

Description

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.

Services available

!
?

Need anything else?

Contributors list

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 objenesis.org.

Developer information

Project status

Build Status Maven Central

Environment setup

I'm using: - Maven 3.6.3 - IntelliJ Ultimate 2020.3 (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 spotbugs.

mvn install -Pfull

To run special builds

Run the Android TCK

  • Install the Android SDK (
    brew cask install android-sdk
    )
  • Install
    platform-tools
    and
    build-tools
    using the sdkmanager (
    sdkmanager "platform-tools" "build-tools"
    )
  • Add an
    ANDROID_HOME
    to target the Android SDK (
    export ANDROID_HOME=$(realpath $(echo "$(dirname $(readlink $(which sdkmanager)))/../.."))
    )
  • Configure a device (real or simulated) and launch it
  • 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
    xml
    
    
    sonatype-nexus-snapshots
    sonatypeuser
    sonatypepassword
    
    
    sonatype-nexus-staging
    sonatypeuser
    sonatypepassword
    
    
    
  • 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 upgrade the Maven wrapper

mvn -N io.takari:maven:wrapper -Dmaven=3.6.3

To update the license

mvn validate license:format -Pall

To release

  • Add the release notes in
    website/site/content/notes.html
    You use this code to generate it
# Get the milestone matching the version
version=???
milestone=$(curl -s "https://api.github.com/repos/easymock/objenesis/milestones" | jq ".[] | select(.title==\"$version\") | .number")
echo "

Version $version ($(date '+%Y-%m-%d'))

" echo echo "
    " curl -s "https://api.github.com/repos/easymock/objenesis/issues?milestone=${milestone}&state=all" | jq -r '.[] | "
  • " + .title + " (#" + (.number|tostring) + ")
  • "' echo "
"
  • Add these servers to your
    settings.xml
  bintray
  your-user-name
  your-api-key


  gpg.passphrase
  your-passphrase

  • Set
    gpg_passphrase
    ,
    bintray_api_key
    and
    bintray_user
    environment variables
  • Launch an Android device (virtual or physical)
  • Launch
    ./deploy.sh version
  • Answer the questions (normally, just acknowledge the proposed default)
  • Follow the instructions

If something fails and you need to rollback a bit, the following commands might help:

bash
mvn release:rollback -Pall
git tag -d $version
git push origin :refs/tags/$version
git reset --hard HEAD~2

Deploy the website

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.