如果在maven的POM中使用jsonschema2pojo

时间:2016-05-26 13:29:58

标签: java maven-plugin pojo

我有一个JSON文件,我想将其转换为POJO,为此我在maven中使用org.jsonschema2pojo的插件。我无法生成结果pojo.Here是pom.xml的片段

<build>
                <plugins>
                    <plugin>


                        <groupId>org.jsonschema2pojo</groupId>
                        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
                        <version>0.4.23</version>
                        <configuration>
                            <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
                            <targetPackage>${basedir}/src/main/resources/result</targetPackage>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>generate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

我在maven中使用generate sources目标。我的期望是它应该在$ {basedir} / src / main / resources / result位置给我pojo文件。但是我得到了。请帮帮我。 谢谢, Rajit

3 个答案:

答案 0 :(得分:2)

您想使用<outputDirectory>代替<targetPackage>。更多细节在这里:

目标包是您希望类型使用的Java包,例如com.youcompany.model

此外,通常您希望生成的输出进入target目录,而不是src。衍生文件通常会去那里,因为target内的任何内容通常都会从源代码管理中省略。如果您不想,则无需指定outputDirectory,默认情况下,生成的输出将进入/target/java-gen

答案 1 :(得分:0)

下面的代码对我有用。

<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>1</id>
            <configuration>
                <annotationStyle>jackson2</annotationStyle>
                <includeAdditionalProperties>false</includeAdditionalProperties>
                <sourcePaths>
                    <sourcePath>${project.basedir}/src/main/resource/jsd/your_schema.json</sourcePath>
                </sourcePaths>
                <targetPackage>your target package</targetPackage>
            </configuration>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
        <execution>
            <id>2</id>
            <configuration>
                <annotationStyle>jackson2</annotationStyle>
                <includeAdditionalProperties>false</includeAdditionalProperties>
                <sourcePaths>
                    <sourcePath>${project.basedir}/src/main/resource/jsd/your_schema2.json</sourcePath>
                </sourcePaths>
                <targetPackage>your target package</targetPackage>
            </configuration>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

答案 2 :(得分:0)

同时使用targetPackage和outputDirectory。

      <plugin>
        <groupId>org.jsonschema2pojo</groupId>
        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
        <version>1.0.2</version>
        <configuration>
          <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
          <outputDirectory>src/main/java</outputDirectory>
          <targetPackage>com.your.package</targetPackage>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>