GithubHelp home page GithubHelp logo

ilooner / japicmp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from siom79/japicmp

0.0 1.0 0.0 1.18 MB

Comparison of two versions of a jar archive

Home Page: https://siom79.github.io/japicmp

License: Apache License 2.0

Java 94.45% CSS 0.24% XSLT 5.31%

japicmp's Introduction

#japicmp#

japicmp is a tool/maven plugin that compares two versions of a jar archive for binary compatibility.

The website is located at https://siom79.github.io/japicmp.

##Features##

  • Comparison of two jar archives without the need to add all of their dependencies to the classpath.
  • Differences are printed on the command line in a simple diff format.
  • Differences can optionally be printed as XML or HTML file.
  • Per default private and package protected classes and class members are not compared. If necessary, the access modifier of the classes and class members to be compared can be set to public, protected, package or private.
  • Per default all classes are tracked. If necessary, certain packages, classes, methods or fields can be excluded or explicitly included.
  • All changes between all classes/methods/fields are compared. If necessary, output can be limited to changes that are binary incompatible (as described in the Java Language Specification).
  • All changes between annotations are compared, hence japicmp can be used to track annotation-based APIs like JAXB, JPA, JAX-RS, etc.
  • A maven plugin is available that allows you to compare the current artifact version with some older version from the repository.
  • The option --semantic-versioning tells you which part of the version you have to increment in order to follow semantic versioning.
  • If a class is serializable, changes are evaluated regarding the Java Object Serialization Specification.
  • Per default synthetic classes and class members (e.g. bridge methods) are hidden. They can be listed by using the option --include-synthetic.

##Downloads##

You can download the latest version from the release page or directly from the maven central repository.

#Development#

  • Build Status

##Reports##

Use the maven site plugin (mvn site) to generate the following reports:

  • findbugs
  • checkstyle
  • japicmp
  • cobertura test coverage

##Release##

This is the release procedure:

  • Increment version in README.md
  • Run release build (substitute passphrase with your GPG password):
mvn release:clean release:prepare -DautoVersionSubmodules=true -Dgpg.passphrase=passphrase
mvn release:perform -Dgpg.passphrase=passphrase
  • Login to Sonatype's Nexus repository
    • Download released artifact from staging repository.
    • Close and release staging repository if sanity checks are successful.

##Contributions##

Pull requests are welcome, but please follow these rules:

  • The basic editor settings (indentation, newline, etc.) are described in the .editorconfig file (see EditorConfig).
  • Provide a unit test for every change.
  • Name classes/methods/fields expressively.
  • Fork the repo and create a pull request (see GitHub Flow).

##Website##

The website is generated by using the maven-site-plugin:

mvn site:site
mvn site:stage
cp -r target/staging $SIOM79_GITHUB_IO_REPO

japicmp's People

Contributors

243826 avatar badlogic avatar eldur avatar mike-duigou avatar mmois avatar roomsg avatar siom79 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.