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>
我修复的内容:
- 参数
inference
、ontology
和 package
在里面得到了两次 -
。对我来说并不那么明显(不幸的是)。
-o
选项不需要完整路径!如果您设置包,schemagen
会将其正确放入类路径中。
- 如果你提供
--package
那么就会达到最后一点提到的效果
Jena-Schemagen-ning 快乐!
爬了几个小时后,我不明白 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>
我修复的内容:
- 参数
inference
、ontology
和package
在里面得到了两次-
。对我来说并不那么明显(不幸的是)。 -o
选项不需要完整路径!如果您设置包,schemagen
会将其正确放入类路径中。- 如果你提供
--package
那么就会达到最后一点提到的效果
Jena-Schemagen-ning 快乐!