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

时间:2015-08-17 17:31:58

标签: java maven jena

我在几个小时左右爬行后才了解maven插件的配置。 谷歌告诉我,有两种配置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类,但使用java-default包。我尝试使用arg --package-o的几种样式,但没有任何更改将生成的词汇表移动到所需的包中。

second one甚至无法正常工作。它抛出一个异常(空指针)或什么都不做,而且#34;跳过&#34;目标:

       <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类应该在生成所需的java包之后放置,因为我在编码中引用它,并且需要它用于映射/断言的原因。

1 个答案:

答案 0 :(得分:0)

好的伙计们,我找到并纠正了错误。

毕竟第二个没有工作,但我是第一次尝试的:

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

我修复了什么:

  • args inferenceontologypackage内部有两次-。对我来说不那么明显(不幸的是)。
  • -o选项不需要完整路径!如果您设置了包,schemagen会将其正确放入类路径中。
  • 如果您提供--package,那么它将达到最后一点所述的效果。

快乐的Jena-Schemagen-ning!