我在几个小时左右爬行后才了解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包之后放置,因为我在编码中引用它,并且需要它用于映射/断言的原因。
答案 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>
我修复了什么:
inference
,ontology
和package
内部有两次-
。对我来说不那么明显(不幸的是)。-o
选项不需要完整路径!如果您设置了包,schemagen
会将其正确放入类路径中。--package
,那么它将达到最后一点所述的效果。快乐的Jena-Schemagen-ning!