Maven Jena schemagen:在特定包中创建时出错

Maven Jena schemagen: error while creating in a specific package

爬了几个小时后,我不明白 maven 插件的配置。 正如 Google 告诉我的那样,有两种配置 schemagen 的方法:

第一个(see here)

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
           <execution>
              <phase>generate-sources</phase>
              <goals>
                 <goal>java</goal>
              </goals>
              <configuration>
                 <mainClass>jena.schemagen</mainClass>
                 <commandlineArgs>
                    --inference \
                    -ontology \
                    -i ${basedir}/src/main/resources/ontology/owl_file.owl \
                    --package com.company.service.domain.ontology \
                    -o ${basedir}/src/main/java/ \
                    -n Vocabulary
                 </commandlineArgs>
              </configuration>
           </execution>
        </executions>
     </plugin>

此方法正确创建 Vocabulary class,但使用 java-默认包。我尝试了 arg --package-o 的几种样式,但没有任何更改将生成的词汇移动到所需的包中。

second one 甚至无法正常工作。它抛出异常(NULL 指针)或什么也不做,"skips" 目标:

       <plugin>
        <groupId>org.apache.jena</groupId>
        <artifactId>jena-maven-tools</artifactId>
        <version>${jenaVersion}</version>
        <configuration>
           <fileOptions>
              <fileOption>
                 <includes>
                    <include>src/main/resources/ontology/ont-file.owl</include>
                    <ontology>true</ontology>
                 </includes>
                 <source>
                    <input>src/main/resources/ontology/ont-file.owl</input>
                 </source>
                 <className>FancyOntologyName</className>
                 <package-name>com.company.service.domain.ontology</package-name>
              </fileOption>
           </fileOptions>
        </configuration>
        <executions>
           <execution>
              <id>schemagen</id>
              <goals>
                 <goal>translate</goal>
              </goals>
           </execution>
        </executions>
     </plugin>

我想实现的:生成的java class应该在生成后放在想要的java包中,因为我在编码中引用了它并且需要它mapping/assertion 个原因。

好的伙计们,我发现并更正了错误。

毕竟第二个不工作,但我第一次尝试就成功了:

      <commandlineArgs>
                --inference \
                --ontology \
                -i ${basedir}/src/main/resources/ontology/ont-file.owl \
                -o "${basedir}/src/main/java/" \
                --package ${mainPackage}.domain.ontology \
                -n Vocabulary
       </commandlineArgs>

我修复的内容:

  • 参数 inferenceontologypackage 在里面得到了两次 -。对我来说并不那么明显(不幸的是)。
  • -o 选项不需要完整路径!如果您设置包,schemagen 会将其正确放入类路径中。
  • 如果你提供--package那么就会达到最后一点提到的效果

Jena-Schemagen-ning 快乐!