0

次のようなフォルダーに整理されたいくつかのjsonスキーマを含むmavenプロジェクトがあります。

src/main/resources/schema/json/modules/moduleA/typesA.json src/main/resources/schema/json/modules/moduleA/typeA.json

したがって、両方のスキーマが同じフォルダーにあります。

typesA スキーマは、次のように typeA スキーマにリンクします。

 "$ref": "resource:/schema/json/modules/moduleA/typeA.json"

すべてのスキーマに対して Java POJOS を生成したいので、次のように jsonschema2pojo-maven-plugin を使用しています。

    <!-- Code generation out of JsonSchema files -->
<plugin>
    <groupId>org.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.5.1</version>
    <configuration>
        <skip>false</skip>
        <sourceDirectory>${basedir}/src/main/resources/schema/json/modules/</sourceDirectory>
        <outputDirectory>${basedir}/src/gen/java/json</outputDirectory>
        <removeOldOutput>true</removeOldOutput>
        <annotationStyle>none</annotationStyle>
        <includeGetters>true</includeGetters>
        <includeSetters>true</includeSetters>
        <useCommonsLang3>true</useCommonsLang3>
        <useLongIntegers>true</useLongIntegers>
        <includeJsr303Annotations>true</includeJsr303Annotations>
        <includeAdditionalProperties>false</includeAdditionalProperties>
        <includeHashcodeAndEquals>false</includeHashcodeAndEquals>
        <dateTimeType>java.time.LocalDateTime</dateTimeType>
        <targetPackage>com.all.my.modules</targetPackage>
    </configuration>
    <executions>
       <execution>
            <phase>generate-sources</phase>
            <goals>
               <goal>generate</goal>
            </goals>
       </execution>
    </executions>
</plugin>

しかし、「mvn clean compile」を実行すると、常に次のスタックトレースで失敗します。

原因: java.lang.IllegalArgumentException: クラスパスからコンテンツを読み取れませんでした。ファイルが見つかりません: resource:/schema/json/modules/moduleA/typeA.json at org.jsonschema2pojo.ContentResolver.resolveFromClasspath(ContentResolver.java:94 ) org.jsonschema2pojo.ContentResolver.resolve(ContentResolver.java:73) で org.jsonschema2pojo.SchemaStore.create(SchemaStore.java:58) で org.jsonschema2pojo.SchemaStore.create(SchemaStore.java:128) で org.jsonschema2pojo .rules.SchemaRule.apply(SchemaRule.java:59) org.jsonschema2pojo.rules.SchemaRule.apply(SchemaRule.java:30) org.jsonschema2pojo.rules.ArrayRule.apply(ArrayRule.java:81) org. org.jsonschema2pojo.rules.TypeRule.apply(TypeRule.java:40) org.jsonschema2pojo.rules.SchemaRule.apply(SchemaRule.java:73) org.jsonschema2pojo.rules.SchemaRule.apply(SchemaRule.java:30) org.jsonschema2pojo.rules.PropertyRule.apply(PropertyRule) .java:75) org.jsonschema2pojo.rules.PropertyRule.apply(PropertyRule.java:43) で org.jsonschema2pojo.rules.PropertiesRule.apply(PropertiesRule.java:70) で org.jsonschema2pojo.rules.PropertiesRule.apply( PropertiesRule.java:38) の org.jsonschema2pojo.rules.ObjectRule.apply(ObjectRule.java:119) の org.jsonschema2pojo.rules.ObjectRule.apply(ObjectRule.java:70) の org.jsonschema2pojo.rules.TypeRule.apply (TypeRule.java:90) で org.jsonschema2pojo.rules.TypeRule.apply(TypeRule.java:40) で org.jsonschema2pojo.rules.SchemaRule.apply(SchemaRule.java:73) で org.jsonschema2pojo.rules.SchemaRule. apply(SchemaRule.java:66) org.jsonschema2pojo.rules.SchemaRule.apply(SchemaRule.java:30) org.jsonschema2pojo.SchemaMapper.generate(SchemaMapper.java:92) org.jsonschema2pojo.Jsonschema2Pojo.generateRecursive(Jsonschema2Pojo.java:134) ) org.jsonschema2pojo.Jsonschema2Pojo.generateRecursive(Jsonschema2Pojo.java:136) で org.jsonschema2pojo.Jsonschema2Pojo.generateRecursive(Jsonschema2Pojo.java:136) で org.jsonschema2pojo.Jsonschema2Pojo.generateRecursive(Jsonschema2Pojo.java:136) で pojo.jsonschema2 .Jsonschema2Pojo.generateRecursive(Jsonschema2Pojo.java:136) org.jsonschema2pojo.Jsonschema2Pojo.generate(Jsonschema2Pojo.java:75) org.jsonschema2pojo.maven.Jsonschema2PojoMojo.execute(Jsonschema2PojoMojo.java:788) org.apache.maven. plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) ... 20以上

しかし、classpathRefs.jsonおよびjsonschema2pojo#refによれば、それは可能であるはずです。mvnDebug を実行してプラグインの実行をデバッグしようとすると、機能する場合と機能しない場合があります。これは既知の問題ですか?のみを使用

"$ref": "typeA.json"

それは常に機能します。しかし、これは私にとって一時的な回避策にすぎません。Java 8 + Maven 3.2.5

4

1 に答える 1