Generate Java types from JSON or JSON Schema and annotates those types for data-binding with Jackson, Gson, etc

Overview

jsonschema2pojo Build Status Maven Central

jsonschema2pojo generates Java types from JSON Schema (or example JSON) and can annotate those types for data-binding with Jackson 2.x or Gson.

Try jsonschema2pojo online
or brew install jsonschema2pojo

You can use jsonschema2pojo as a Maven plugin, an Ant task, a command line utility, a Gradle plugin or embedded within your own Java app. The Getting Started guide will show you how.

A very simple Maven example:

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>1.1.0</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.example.types</targetPackage>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Useful pages:

Project resources:

Licensed under the Apache License, Version 2.0.

YourKit

Special thanks to YourKit, who support this project through a free license for their full-featured YourKit Java Profiler.

Comments
  • Gradle shows deprecation warnings regarding Gradle 7.0

    Gradle shows deprecation warnings regarding Gradle 7.0

    The following message is printed if using the plugin with Gradle 6.0.1: Property 'configuration' is not annotated with an input or output annotation. This behaviour has been deprecated and is scheduled to be removed in Gradle 7.0.

    https://docs.gradle.org/6.7/userguide/more_about_tasks.html#sec:up_to_date_checks

    opened by sergeykad 42
  • Missing parts in generated Java classes

    Missing parts in generated Java classes

    What steps will reproduce the problem? Generate Java classes from a JSON schema

    What is the expected output? I expect that all entries in the JSON schema would be possible to get and set via the auto generated Java code.

    What do you see instead? Only Java methods to a certain level are generated. It ends with reference to a list of Objects: private List features = new ArrayList(); How can I for instance set the cost for a specific part?

    What version of the tool are you using? On what Java version? (On what version of Maven/Ant if applicable?)

    Java 7, Eclipse, maven with pom

    mySchemaMapper2 = new SchemaMapper(new RuleFactory(new JsonSchemaGenerationConfig(), new Jackson2Annotator(), new SchemaStore()), new SchemaGenerator());
    
            mySchemaMapper2.generate(codeModel, "Testar3", "com.domain.test", urlSourceTest3);
    
    
    static class JsonSchemaGenerationConfig extends Object implements GenerationConfig {
    
        @Override
        public boolean isGenerateBuilders() {
            return true;
        }
    
        @Override
        public boolean isUsePrimitives() {
            return false;
        }
    
        @Override
        public Iterator<File> getSource() { // Change
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public File getTargetDirectory() { // Change
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public String getTargetPackage() { // Change
            return "com.domain.test";
        }
    
        @Override
        public char[] getPropertyWordDelimiters() {
            return "-_".toCharArray();
        }
    
        @Override
        public boolean isUseLongIntegers() {
            return false;
        }
    
        @Override
        public boolean isUseDoubleNumbers() {
            return false;
        }
    
        @Override
        public boolean isIncludeHashcodeAndEquals() {
            return true;
        }
    
        @Override
        public boolean isIncludeToString() {
            return true;
        }
    
        @Override
        public AnnotationStyle getAnnotationStyle() {
            return AnnotationStyle.JACKSON2;
        }
    
        @Override
        public Class<? extends Annotator> getCustomAnnotator() { // Change
            return null;
        }
    
        @Override
        public boolean isIncludeJsr303Annotations() {
            return true;
        }
    
        @Override
        public SourceType getSourceType() {
            return SourceType.JSONSCHEMA;
        }
    
        @Override
        public boolean isRemoveOldOutput() {
            return true;
        }
    
        @Override
        public String getOutputEncoding() {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public boolean isUseJodaDates() {
            return false;
        }
    
    }
    

    testar3.schema.json:

    { "type": "object", "properties": { "carId": { "description": "Unique Id for the car", "type": "string" }, "features": { "description": "Features for the car", "type": "array", "item": { "featureId": { "description": "Unique id for the feature.", "type": "string" }, "things": { "type": "array", "description": "List of things this feature contains", "item": { "thingId": { "description": "The unique identifier for a thing.", "type": "string" }, "parts": { "type": "array", "items": { "type": "object", "properties": { "partId ": { "description": "The unique identifier for a part", "type": "string" }, "cost": { "description": "The cost for this thing", "type": "number" }, "noOfDecimals": { "description": "Number of decimal places", "type": "number" } } } } } } }, "required": [ "featureId", "things" ] } }, "required": [ "carId", "features" ] }

    code: public class GenerateJavaClassesFromJsonSchema3 { private static final String TEST3_JSON_SCHEMA = "testar3.schema.json"; static URL urlSourceTest3 = GenerateJavaClassesFromJsonSchema3.class.getResource(TEST3_JSON_SCHEMA); static JCodeModel codeModel = new JCodeModel(); static SchemaMapper mySchemaMapper = new SchemaMapper(); static SchemaMapper mySchemaMapper2;

    public static void main(String[] args)
    {
        try {
            File myFile = new File("directory");
    
            mySchemaMapper.generate(codeModel, "Testar3Default", "com.domain.test", urlSourceTest3);
    
            mySchemaMapper2 = new SchemaMapper(new RuleFactory(new JsonSchemaGenerationConfig(), new Jackson2Annotator(), new SchemaStore()), new SchemaGenerator());
            mySchemaMapper2.generate(codeModel, "Testar3", "com.domain.test", urlSourceTest3);
    
            myFile.mkdirs();
            codeModel.build(myFile);
        }
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    static class JsonSchemaGenerationConfig extends Object implements GenerationConfig {
    
        @Override
        public boolean isGenerateBuilders() {
            return true;
        }
    
        @Override
        public boolean isUsePrimitives() {
            return false;
        }
    
        @Override
        public Iterator<File> getSource() { // Change
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public File getTargetDirectory() { // Change
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public String getTargetPackage() { // Change
            return "com.domain.test";
        }
    
        @Override
        public char[] getPropertyWordDelimiters() {
            return "-_".toCharArray();
        }
    
        @Override
        public boolean isUseLongIntegers() {
            return false;
        }
    
        @Override
        public boolean isUseDoubleNumbers() {
            return false;
        }
    
        @Override
        public boolean isIncludeHashcodeAndEquals() {
            return true;
        }
    
        @Override
        public boolean isIncludeToString() {
            return true;
        }
    
        @Override
        public AnnotationStyle getAnnotationStyle() {
            return AnnotationStyle.JACKSON2;
        }
    
        @Override
        public Class<? extends Annotator> getCustomAnnotator() { // Change
            return null;
        }
    
        @Override
        public boolean isIncludeJsr303Annotations() {
            return true;
        }
    
        @Override
        public SourceType getSourceType() {
            return SourceType.JSONSCHEMA;
        }
    
        @Override
        public boolean isRemoveOldOutput() {
            return true;
        }
    
        @Override
        public String getOutputEncoding() {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public boolean isUseJodaDates() {
            return false;
        }
    
    }
    

    }

    result (Testar3.java):

    package com.domain.test;

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Generated; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder;

    @JsonInclude(JsonInclude.Include.NON_NULL) @Generated("org.jsonschema2pojo") @JsonPropertyOrder({ "carId", "features" }) public class Testar3 {

    /**
     * Unique Id for the car
     * 
     */
    @JsonProperty("carId")
    private String carId;
    /**
     * Features for the car
     * 
     */
    @JsonProperty("features")
    private List<Object> features = new ArrayList<Object>();
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    
    /**
     * Unique Id for the car
     * 
     */
    @JsonProperty("carId")
    public String getCarId() {
        return carId;
    }
    
    /**
     * Unique Id for the car
     * 
     */
    @JsonProperty("carId")
    public void setCarId(String carId) {
        this.carId = carId;
    }
    
    public Testar3 withCarId(String carId) {
        this.carId = carId;
        return this;
    }
    
    /**
     * Features for the car
     * 
     */
    @JsonProperty("features")
    public List<Object> getFeatures() {
        return features;
    }
    
    /**
     * Features for the car
     * 
     */
    @JsonProperty("features")
    public void setFeatures(List<Object> features) {
        this.features = features;
    }
    
    public Testar3 withFeatures(List<Object> features) {
        this.features = features;
        return this;
    }
    
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
    
    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }
    
    @Override
    public boolean equals(Object other) {
        return EqualsBuilder.reflectionEquals(this, other);
    }
    
    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }
    
    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }
    

    }

    pom.xml:

            <plugin>
              <groupId>com.googlecode.jsonschema2pojo</groupId> 
              <artifactId>jsonschema2pojo-maven-plugin</artifactId>
              <version>0.4.0</version>
              <configuration>
                  <sourceDirectory>${basedir})</sourceDirectory>
                  <outputDirectory>${basedir})</outputDirectory>
                  <targetPackage>com.example.types</targetPackage>
                  <useLongIntegers>false</useLongIntegers>
                  <usePrimitives>false</usePrimitives>
                  <skip>false</skip>
              </configuration>
              <executions> 
                  <execution>
                      <goals>
                          <generateBuilders >true</generateBuilders>
                          <goal>generate</goal>
                      </goals>
                  </execution>
              </executions>
        </plugin>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.github.fge</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>2.1.7</version>
        </dependency>
        <dependency>
          <groupId>org.jsonschema2pojo</groupId>
          <artifactId>jsonschema2pojo-core</artifactId>
          <version>0.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.codemodel</groupId>
            <artifactId>codemodel</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.0.1</version>
        </dependency>
    
    invalid  opened by xtergo 32
  • Support for custom Annotator classes

    Support for custom Annotator classes

    Original author: [email protected] (January 28, 2013 19:05:34)

    Hi, It seems current logic only handles "properties" array to generate POJOs. Is there any programmatic way to extend this logic to additionally support link-relationships representation in POJOs?


    Specifically, jersey-server-linking defines @Ref/@Binding annotations that allows to specify resource and template parameter binding.

    Sample that comes with the library is a representation bean (POJO) as follows:

    public class ItemRepresentation {

    @XmlElement
    private String name;
    
    @Ref(
        resource=ItemResource.class,
        style = Style.ABSOLUTE,
        bindings=@Binding(name=&quot;id&quot;, value=&quot;${resource.id}&quot;)
    )
    @XmlElement
    URI self;
    
    @Ref(
        resource=ItemResource.class,
        style = Style.ABSOLUTE,
        condition=&quot;${resource.next}&quot;,
        bindings=@Binding(name=&quot;id&quot;, value=&quot;${resource.nextId}&quot;)
    )
    @XmlElement
    URI next;
    
    @Ref(
        resource=ItemResource.class,
        style = Style.ABSOLUTE,
        condition=&quot;${resource.prev}&quot;,
        bindings=@Binding(name=&quot;id&quot;, value=&quot;${resource.prevId}&quot;)
    )
    @XmlElement
    URI prev;
    
    public ItemRepresentation() {
        this.name = &quot;&quot;;
    }
    
    public ItemRepresentation(String name) {
        this.name = name;
    }
    

    }

    Right now, the following schema: { "type":"object", "properties": { "foo": { "type": "string" }, "bar": { "type": "integer" }, "baz": { "type": "boolean" } }, "links": [ { "rel": "self", "href": "clients/{id}" }] }

    ... generates same POJO as following schema (without links): { "type":"object", "properties": { "foo": { "type": "string" }, "bar": { "type": "integer" }, "baz": { "type": "boolean" } } }

    And since POJO generation is dynamic, I would like to be able to either decorate the generated POJOS dynamically, or to influence the code generating the classes in the first place, to add additional annotations in the generated code.

    Beside the obvious decoupling from Jersey, do you see why links are not generated (at all) in the POJOs? Should I specifically add a bag of properties to have the defined links listed?

    Thanks for your help.

    Original issue: http://code.google.com/p/jsonschema2pojo/issues/detail?id=86

    enhancement imported wiki 
    opened by joelittlejohn 27
  • Gradle plugin has no default propertyWordDelimiters

    Gradle plugin has no default propertyWordDelimiters

    Hi All,

    I have been using this library for converting my jsonschema2pojo and I use both maven and gradle for my project.

    My JsonSchema looks like below:

    {
        "javaType" : "user.Tool",
        "type":"object",
        "$schema": "http://json-schema.org/draft-03/schema",
        "id": "http://jsonschema.net",
        "required":false,
        "properties":{
            "tool_key": {
                "type":"number",
                "id": "http://jsonschema.net/tool_key",
                "required":false
            },
            "tool_password": {
                "type":"string",
                "id": "http://jsonschema.net/tool_password",
                "required":false
            }
        }
    }
    

    For maven, it generates java class like: ToolKey and ToolPassword For gradle, it generates java class like: Tool_key and Tool_password

    Is this a problem with using this library? Is there any solution to have the pojo's created with same names?

    Please let me know. Appreciate any help.

    Thanks.

    opened by asker123 23
  • Add support for http:// URLs when using $ref

    Add support for http:// URLs when using $ref

    Original author: [email protected] (February 01, 2013 22:51:08)

    I have a json-schema valid schema (validated using JSV) and I setup my maven project to generate POJO out of it.

    I get the following error: Execution default of goal com.googlecode.jsonschema2pojo:jsonschema2pojo-maven-plugin:0.3.4:generate failed: URI scheme is not "file" (com.googlecode.jsonschema2pojo:jsonschema2pojo-maven-plugin:0.3.4:generate:default:generate-sources)

    Using 0.3.4 version.

    My schema ref$ to another schema, which is in same src/main/resources/schema directory. I refer to it e.g. "$ref": "./myotherschema.json#"

    What am I doing wrong?

    Original issue: http://code.google.com/p/jsonschema2pojo/issues/detail?id=87

    enhancement imported 
    opened by joelittlejohn 23
  • Hidden files such as .DS_Store are not ignored

    Hidden files such as .DS_Store are not ignored

    When I run the generator if there is a .DS_Store file in the json schema directory the build will fail. Wondering if this is by design or if this is a bug.

    opened by paulalewis 22
  • Add 'sourceSortOrder' to decide how source files are iterated

    Add 'sourceSortOrder' to decide how source files are iterated

    …es' to process source files before directories.

    We have noticed that when running the code generation on Windows and Linux we can inconsistencies of which packages included sub-classes were being created. Given the source files:

    src/main/resources/virtualization-capabilities-api/schema/json/includes/MessageProperties.jsd src/main/resources/virtualization-capabilities-api/schema/json/includes/VirtualMachineQuery.jsd src/main/resources/virtualization-capabilities-api/schema/json/VMQueryRequestMessage.jsd

    On our Linux box it generates:

    target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/MessageProperties.java target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/Query.java target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/VMQueryRequestMessage.java

    And on Windows it generates: target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/includes/MessageProperties.java target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/includes/VirtualMachineQuery.java target/generated-sources/virtualization-capabilities-api/com/dell/cpsd/vcenter/capabilities/api/VMQueryRequestMessage.java

    We're submitting this new configuration option to ensure that within a directory, files are processed first before any sub-directories to ensure consistency between environments. The default false maintains the existing behaviour to ensure backward compatibility.

    We could only provide an integration test for when the option is set to true, as in this case we can verify the behaviour, the false configuration option assertions would depend on the underlying OS.

    opened by Paul-Vincent 21
  • javaName in definitions generates invalid code

    javaName in definitions generates invalid code

    Below is an example with four coordinates for an image transform. If the point does not include a javaName then the class is called TopLeft. To fix this the name is defined, but that leads to the get/set methods of topLeft, topRight, etc. to be called getPoint and setPoint. The fields are properly named, but the duplicate method names results in invalid Java code. Interestingly the fluent methods (withX) are properly named.

    {
      "type": "object",
      "javaName": "PerspectiveTransform",
      "properties": {
        "topLeft": {
          "$ref": "#/definitions/point"
        },
        "topRight": {
          "$ref": "#/definitions/point"
        },
        "bottomLeft": {
          "$ref": "#/definitions/point"
        },
        "bottomRight": {
          "$ref": "#/definitions/point"
        }
      },
      "definitions": {
        "point": {
          "javaName": "Point",
          "type": "object",
          "properties": {
            "x": {
              "type": "integer"
            },
            "y": {
              "type": "integer"
            }
          }
        }
      }
    }
    
    /**
     * 
     * Corresponds to the "topLeft" property.
     * 
     * @return
     *     The point
     */
    @JsonProperty("topLeft")
    public Point getPoint() {
        return topLeft;
    }
    
    /**
     * 
     * Corresponds to the "topLeft" property.
     * 
     * @param point
     *     The topLeft
     */
    @JsonProperty("topLeft")
    public void setPoint(Point topLeft) {
        this.topLeft = topLeft;
    }
    
    public PerspectiveTransform withTopLeft(Point topLeft) {
        this.topLeft = topLeft;
        return this;
    }
    
    /**
     * 
     * Corresponds to the "topRight" property.
     * 
     * @return
     *     The point
     */
    @JsonProperty("topRight")
    public Point getPoint() {
        return topRight;
    }
    
    /**
     * 
     * Corresponds to the "topRight" property.
     * 
     * @param point
     *     The topRight
     */
    @JsonProperty("topRight")
    public void setPoint(Point topRight) {
        this.topRight = topRight;
    }
    
    public PerspectiveTransform withTopRight(Point topRight) {
        this.topRight = topRight;
        return this;
    }
    
    opened by ben-manes 20
  • Support for @JsonTypeInfo in generated classes using deserializationClassProperty

    Support for @JsonTypeInfo in generated classes using deserializationClassProperty

    Jackson 2 has a @JsonTypeInfo annotation available so that (de)serialization of classes that extend abstract classes works correctly.

    Adding this annotation to an abstract POJO will (during serialization) add a top-level property to the schema that specifies a fully qualified class name that specifies the type that a particular json object should be deserialized to.

    This PR allows for an "abstractJavaTypeProperty" that specifies the name of the property that will contain the fully qualified name in the serialized object.

    For example, if your schema contains node with:

    "abstractJavaTypeProperty" : "className"
    

    The generated POJO will be an abstract class, and will have this annotation:

    @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "className")
    
    opened by jayashe 20
  • Add 'removeOldOutput' option to clear all previously generated sources

    Add 'removeOldOutput' option to clear all previously generated sources

    Original author: [email protected] (March 05, 2013 22:18:53)

    What steps will reproduce the problem?

    1. Create a schema, e.g. a type with some enum values
    2. Generate POJO
    3. Modify schema, eg. add new value to enum
    4. Re-Generate POJO

    What is the expected output? The Java source now contains the new enum value.

    What do you see instead? The Java source, generated in step 2, remains unchanged.

    What version of the tool are you using? On what Java version? (On what version of Maven/Ant if applicable?) Use maven and latest build 0.3.5

    If I remove the Java files before step 3, then the Java file is properly generated with the new enum value.

    Would it be possible to include a "clean" option to the generate target so that if set to true, all files already present in the generation folder specified would be deleted before starting the generation process (equivalent of deleting manually the already generated files). This is especially important, since you typically do not check-in generate sources, and as such, you expect no sources to be already generated (note that you may have .class reused if found in your class-path, e.g. a jar). Cleaning up source folder before the source generation process therefore makes sense.

    I don't know what causes the class not to be refreshed when schema change. Is there any logic that says if the Java (not class) file is present do not regenerate? If the algo (which I believe is the one used) is "if class file exists, do not generate/overwrite source", then I would need to somehow clean not the Java source files but actually the Java (generated) class files from the folder the (maven) project use to store compiled classes, following Java source generation.

    Let me know if the description is unclear. I tried my best.

    Original issue: http://code.google.com/p/jsonschema2pojo/issues/detail?id=92

    enhancement imported wiki 
    opened by joelittlejohn 20
  • Added support for custom date-time, date, time classes.

    Added support for custom date-time, date, time classes.

    Allow to specify jsr310 classes i.e. java.time.* (jdk 8) but mantain compatibility at compile level 1.6 as previous. Updated also cli, maven, and ant but not gradle

    opened by dmiorandi 19
  • Maven plugin's `includeGeneratedAnnotation` does not support `jakarta.annotation.Generated`

    Maven plugin's `includeGeneratedAnnotation` does not support `jakarta.annotation.Generated`

    When using both includeJsr303Annotations and includeGeneratedAnnotation, it seems one still gets javax.annotation.(processing.)Generated instead of jakarta.annotaiton.Generated.

    opened by anno1985 3
  • Please add support for allOf

    Please add support for allOf

    I'm trying to use this tool to generate classes for the OASIS STIX 2.1 schema. This uses allOf everywhere in the schema definitions. Is this something that can be easily achieved?

    opened by KangoV 1
  • Deprecated warning with gradle plugin version 1.1.2

    Deprecated warning with gradle plugin version 1.1.2

    Hey there,

    this plugin won't be compatible to gradle 8.0, as the following error occurs when syncing my project with the plugin enabled: IncrementalTaskInputs has been deprecated. This is scheduled to be removed in Gradle 8.0. On method 'GenerateJsonSchemaAndroidTask.generate' use 'org.gradle.work.InputChanges' instead. Consult the upgrading guide for further information: https://docs.gradle.org/7.5/userguide/upgrading_version_7.html#incremental_task_inputs_deprecation

    Could this plugin be updated please to conform to these changes?

    Should any additional information be required, I'd be happy to help

    opened by TobiPeterG 0
  • Bump maven-plugin-plugin from 3.6.1 to 3.7.0

    Bump maven-plugin-plugin from 3.6.1 to 3.7.0

    Bumps maven-plugin-plugin from 3.6.1 to 3.7.0.

    Release notes

    Sourced from maven-plugin-plugin's releases.

    3.7.0

    Bug

    • [MPLUGIN-298] - The plugin descriptor generated by plugin:descriptor does not consider @ see javadoc taglets
    • [MPLUGIN-394] - Report-Mojo doesn't respect input encoding
    • [MPLUGIN-403] - Generating site reports for plugin results in NoSuchMethodError
    • [MPLUGIN-404] - JDK Requirements in plugin-info.html: Consider property "maven.compiler.release"
    • [MPLUGIN-420] - Parameters documentation inheriting @ since from Mojo can be confusing
    • [MPLUGIN-428] - Don't emit warning for missing javadoc URL of primitives
    • [MPLUGIN-429] - Don't emit warning for missing javadoc URI if no javadoc sources are configured
    • [MPLUGIN-438] - Parameter description should be taken from annotated item

    New Feature

    • [MPLUGIN-9] - Add link to javadoc in configuration description page for user defined types of Mojos.
    • [MPLUGIN-396] - Allow only @ Deprecated annotation without @ deprecated javadoc tag
    • [MPLUGIN-400] - add system requirements history section
    • [MPLUGIN-402] - report: allow to generate usage section in plugin-info.html with true
    • [MPLUGIN-419] - Allow @ Parameter on setters methods
    • [MPLUGIN-423] - Extract plugin report into its own plugin
    • [MPLUGIN-427] - report: Expose generics information of Collection and Map types

    Improvement

    • [MPLUGIN-297] - plugin-info.html should contain a better Usage section
    • [MPLUGIN-390] - Do not overwrite generate files with no content change
    • [MPLUGIN-393] - Upgrade to JUnit 5 and @ Inject annotations
    • [MPLUGIN-398] - Support for java 20 - ASM 9.4
    • [MPLUGIN-405] - Don't print empty Memory, Disk Space in System Requirements
    • [MPLUGIN-408] - simplification in helpmojo build
    • [MPLUGIN-411] - Get rid of plexus-compiler-manager from tests
    • [MPLUGIN-412] - Use Maven core artifacts in provided scope
    • [MPLUGIN-417] - report and descriptor goal need to evaluate Javadoc comments differently
    • [MPLUGIN-433] - Allow to reference aggregator javadoc from plugin report

    Task

    • [MPLUGIN-378] - Detect legacy/javadoc Mojo definitions, warn to use Java 5 annotations
    • [MPLUGIN-389] - Update level to Java 8
    • [MPLUGIN-391] - Deprecate scripting support for mojos
    • [MPLUGIN-406] - Deprecate requirements parameter in report Mojo
    • [MPLUGIN-407] - Remove duplicate code from PluginReport
    • [MPLUGIN-409] - Prepare for Doxia (Sitetools) 2.0.0
    • [MPLUGIN-430] - Fix documentation for maven-plugin-report-plugin
    • [MPLUGIN-431] - Remove deprecated items from new maven-plugin-report-plugin

    ... (truncated)

    Commits
    • 0f2c0d5 [maven-release-plugin] prepare release maven-plugin-tools-3.7.0
    • 76d99af [MPLUGIN-438] Parameter description should be taken from annotated item
    • 5b60490 [MPLUGIN-435] Revert MPLUGIN-410. Drop @​Parameter.implementation and keep it ...
    • ebdb063 [MPLUGIN-437] Fixes to the plugin descriptor generation (#167)
    • 339fc29 [MPLUGIN-433] Allow to disable link validation (#162)
    • a191579 [MPLUGIN-422] Upgrade to plexus-utils 3.5.0 (#164)
    • 664c16e [MPLUGIN-431] Remove deprecated items from new maven-plugin-report-plugin
    • 8a76400 [MPLUGIN-427] only emit simple parameter type for configuration (#163)
    • 322a9bb [MPLUGIN-434] Improve dependency management
    • a0ec0ba [MPLUGIN-427] Expose generics information of parameter types in report (#159)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Releases(jsonschema2pojo-1.1.2)
    A JSON Schema validation implementation in pure Java, which aims for correctness and performance, in that order

    Read me first The current version of this project is licensed under both LGPLv3 (or later) and ASL 2.0. The old version (2.0.x) was licensed under LGP

    Java Json Tools 1.5k Jan 4, 2023
    Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.

    json-io Perfect Java serialization to and from JSON format (available on Maven Central). To include in your project: <dependency> <groupId>com.cedar

    John DeRegnaucourt 303 Dec 30, 2022
    MapNeat is a JVM library written in Kotlin that provides an easy to use DSL (Domain Specific Language) for transforming JSON to JSON, XML to JSON, POJO to JSON in a declarative way.

    MapNeat is a JVM library written in Kotlin that provides an easy to use DSL (Domain Specific Language) for transforming JSON to JSON, XML to JSON, POJ

    Andrei Ciobanu 59 Sep 17, 2022
    A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back

    A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back, with a transparent support of any kind of self-references and with a full Java 9 compatibility.

    Andrey Mogilev 9 Dec 30, 2021
    Main Portal page for the Jackson project

    Jackson Project Home @github This is the home page of the Jackson Project. What is New? Oct 1, 2020: Jackson participates in Hacktoberfest2020 and we

    FasterXML, LLC 7.9k Jan 2, 2023
    Core part of Jackson that defines Streaming API as well as basic shared abstractions

    Overview This project contains core low-level incremental ("streaming") parser and generator abstractions used by Jackson Data Processor. It also incl

    FasterXML, LLC 2.1k Jan 1, 2023
    Uber-project for (some) standard Jackson textual format backends: csv, properties, yaml (xml to be added in future)

    Overview This is a multi-module umbrella project for Jackson standard text-format dataformat backends. Dataformat backends are used to support format

    FasterXML, LLC 351 Dec 22, 2022
    A query language for JSON and a template engine to generate text output.

    Josson & Jossons Josson is a query language for JSON. Jossons is a template engine to generate text output. Features and Capabilities of Josson Query

    Octomix Software 16 Dec 14, 2022
    A simple java JSON deserializer that can convert a JSON into a java object in an easy way

    JSavON A simple java JSON deserializer that can convert a JSON into a java object in an easy way. This library also provide a strong object convertion

    null 0 Mar 18, 2022
    JSON to JSON transformation library written in Java.

    Jolt JSON to JSON transformation library written in Java where the "specification" for the transform is itself a JSON document. Useful For Transformin

    Bazaarvoice 1.3k Dec 30, 2022
    Generate getter and setter on Java with ease! PS: Intended to use for labs where typing them are still the norm!!

    GenerateGetterSetter Generate getter and setter on Java with ease! PS: Intended to use for labs where typing them are still the norm!! How to use Clon

    Vishnu Sanal. T 4 Jan 4, 2022
    Essential-json - JSON without fuss

    Essential JSON Essential JSON Rationale Description Usage Inclusion in your project Parsing JSON Rendering JSON Building JSON Converting to JSON Refer

    Claude Brisson 1 Nov 9, 2021
    A 250 lines single-source-file hackable JSON deserializer for the JVM. Reinventing the JSON wheel.

    JSON Wheel Have you ever written scripts in Java 11+ and needed to operate on some JSON string? Have you ever needed to extract just that one deeply-n

    Roman Böhm 14 Jan 4, 2023
    A Java serialization/deserialization library to convert Java Objects into JSON and back

    Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a

    Google 21.7k Jan 8, 2023
    A JSON Transmission Protocol and an ORM Library for automatically providing APIs and Docs.

    ?? 零代码、热更新、全自动 ORM 库,后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。 ?? A JSON Transmission Protocol and an ORM Library for automatically providing APIs and Docs.

    Tencent 14.4k Dec 31, 2022
    A modern JSON library for Kotlin and Java.

    Moshi Moshi is a modern JSON library for Android and Java. It makes it easy to parse JSON into Java objects: String json = ...; Moshi moshi = new Mos

    Square 8.7k Dec 31, 2022
    Java libraries for serializing, deserializing, and manipulating JSON values

    java-json-toolkit The json-toolkit repository contains the code to the following libraries: json-toolkit-text: basic library for conversion between te

    d-coding GmbH 2 Jan 26, 2022
    Screaming fast JSON parsing and serialization library for Android.

    #LoganSquare The fastest JSON parsing and serializing library available for Android. Based on Jackson's streaming API, LoganSquare is able to consiste

    BlueLine Labs 3.2k Dec 18, 2022
    JSON query and transformation language

    JSLT JSLT is a complete query and transformation language for JSON. The language design is inspired by jq, XPath, and XQuery. JSLT can be used as: a q

    Schibsted Media Group 510 Dec 30, 2022