我有一个Maven项目,包含三个模块:schema
、gml
和address
。模式包含两个XSD:gmlprofil-1.1。xsd
-一个简单的GML配置文件和地址。xsd
使用相对模式位置导入GML模式,如下所示:
<import schemaLocation="../gml/gmlprofil-1.1.xsd" namespace="http://www.opengis.net/gml/3.2"/>
在gml
模块和address
模块中,我使用maven-jaxb2-plugin
和jaxb2 basics
来生成带有equals()和hashCode()的类。gml
模块工作正常,但在运行address
时,我遇到以下错误:
com.sun.istack.SAXParseException2; IOException thrown when processing "../gml/gmlprofil-1.1.xsd". Exception: java.io.FileNotFoundException: C:\code\gml\gmlprofil-1.1.xsd
好的一份目录文件来拯救我们!
REWRITE_SYSTEM "../gml/gmlprofil-1.1.xsd" "maven:com.test:schema:jar::!/com/test/schemas/gml/gmlprofil-1.1.xsd"
看起来绝对路径已解决,但随后出现了畸形的异常。
[DEBUG] Parent resolver has resolved publicId [null], systemId [../gml/gmlprofil-1.1.xsd] to [maven:com.test:schema:jar::!/com/test/schemas/gml/gmlprofil-1.1.xsd].
[DEBUG] Resolving systemId [maven:com.test:schema:jar::!/com/test/schemas/gml/gmlprofil-1.1.xsd] as Maven dependency resource.
[DEBUG] Resolved dependency resource [Dependency {groupId=com.test, artifactId=schema, version=1.0-SNAPSHOT, type=jar, classifier=null, resource=com/test/schemas/gml/gmlprofil-1.1.xsd}] to resource URL [jar:file:/C:/code/jaxb-test/schema/target/schema-1.0-SNAPSHOT.jar!/com/test/schemas/gml/gmlprofil-1.1.xsd].
[DEBUG] Resolved systemId [maven:com.test:schema:jar::!/com/test/schemas/gml/gmlprofil-1.1.xsd] to [jar:file:/C:/code/jaxb-test/schema/target/schema-1.0-SNAPSHOT.jar!/com/test/schemas/gml/gmlprofil-1.1.xsd].
[ERROR] Error while parsing schema(s).Location [ maven:com.test:schema:jar::!/com/test/schemas/adress/adress.xsd{8,97}].
org.xml.sax.SAXParseException; systemId: maven:com.test:schema:jar::!/com/test/schemas/adress/adress.xsd; lineNumber: 8; columnNumber: 97; unknown protocol: maven
...
Caused by: java.net.MalformedURLException: unknown protocol: maven
这是我的地址
的pom:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<bindingDirectory>src/main/resources</bindingDirectory>
<episode>true</episode>
<useDependenciesAsEpisodes>true</useDependenciesAsEpisodes>
<extension>true</extension>
<forceRegenerate>false</forceRegenerate>
<schemaLanguage>XMLSCHEMA</schemaLanguage>
<strict>false</strict>
<verbose>false</verbose>
<catalog>src/main/resources/catalog.cat</catalog>
<args>
<arg>-npa</arg>
<arg>-XsimpleEquals</arg>
<arg>-XsimpleHashCode</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.9.5</version>
</plugin>
</plugins>
<schemas>
<schema>
<dependencyResource>
<groupId>com.test</groupId>
<artifactId>schema</artifactId>
<resource>com/test/schemas/adress/adress.xsd</resource>
</dependencyResource>
</schema>
</schemas>
</configuration>
</plugin>
我尝试过一些解决方案:
<import schemaLocation="maven:com.test:schema:jar::!/com/test/schemas/gml/gmlprofil-1.1.xsd" namespace="http://www.opengis.net/gml/3.2"/>
<import schemaLocation="http://test.com/schemas/gml/gmlprofil-1.1.xsd" namespace="http://www.opengis.net/gml/3.2"/>
REWRITE_SYSTEM "http://test.com/schemas" "maven:com.test:schema:jar::!/com/test/schemas"
将maven-jaxb2-plugin
版本降低到0.9.1。使用此方法,我甚至不需要曲库文件,但是我得到了这个错误:
[错误]无法执行目标组织。jvnet。jaxb2。maven2:maven-jaxb2-plugin:0.9.1:generate(default)on project address:target org的执行默认值。jvnet。jaxb2。maven2:maven-jaxb2-plugin:0.9.1:generate失败:执行org时缺少必需的类。jvnet。jaxb2。maven2:maven-jaxb2-plugin:0.9.1:generate:com/sun/tools/xjc/model/Aspect
这可以通过交换-Xequals
和-XhashCode
来解决,而不是-XsimpleEquals
和-XsimpleHashCode
。
这三种解决方案都有效,但没有一种是完美的。前两种方法需要操作模式,而第三种方法在生成的类中引入了对jaxb2 basics runtime
的不必要的依赖。后者是可以接受的,但如果有人知道如何使用我的设置运行SimpleQuals,我将不胜感激。
欢迎来到我的痛苦世界。
你肯定知道ogc模式项目,对吧?
有趣的是,曲库甚至看起来是正确的。不确定那里发生了什么,但这是我最终发现最有效的解决方案:
>
编译绝对URL:
<schemas>
<schema>
<url>http://test.com/schemas/adres/adres.xsd</url>
</schema>
</schemas>
使用曲库重写
“重写系统”http://test.com/schemas“maven:com。测试:schema:jar:/com/test/schemas“
这基本上是第三种解决方案,但不必更改模式。只需从绝对URL开始,它就会被目录重写。
啊,是的:
免责声明我是maven-jaxb2-plugin、jaxb2基础知识以及上述ogc模式项目的作者。
顺便问一下,jaxb2基础运行时
依赖项有什么不好的地方?
我有一个gradle android项目,有两个模块: 穿 在我的gradle配置中,我有不同的构建类型。默认设置(debug和release,每个都有自定义设置)以及dev和beta构建类型(也有自定义签名、自定义proguard和自定义applicationIdSuffix)。 我现在想做的是使用构建类型测试版(gradle清洁组件测试版)构建应用程序包。这就开始在测试版中构建应用程序,看到它
我有一个带有多个模块的gradle(Android)库,有些模块依赖于其他模块(与这里的答案非常相似)https://stackoverflow.com/a/41761846/906362) 这对开发很有用,因为我可以对任何模块进行更改,并看到它们反映在其他模块上。但是要将构建发布到,我需要依赖项作为它们的在线版本。比如: 因此,当它被添加到项目中时,它正确地引用了在上找到的版本,而不是在使用时添
问题内容: 我想将一个Web服务URL请求表示为一个对象,并发现在继承层次结构中可能有很多通用参数。一个请求可以有很多参数,一些是必选参数,而其他是可选参数,我相信Bloch的Builder模式是一个不错的选择,它可以使用流畅的接口模拟命名参数。 具体来说,我正在设计Google Maps网络服务API,该API具有常规的网络服务请求 和是必填参数,也是必填参数。还有一个可选参数。 每个服务都有其
我目前正在使用maven-jaxb2-plugin v0.13.3。 插件配置有多个执行,每个执行都处理wsdl文件。其中有几个是完全独立的,但有几个只是同一企业中不同的wsdl,其模式导入公共的基本模式。 请注意,我无法更改WSDL或模式。 原始代码使用设置为true的“forceRegen”,以及所有写入相同目标目录的代码。这在命令行构建中运行良好,但正如许多人现在所知,这会导致Eclipse
我尝试使用thajaxb来整理xml,我使用xjc命令从xsd文件order.xsd生成java类 我得到了许多带注释的类,但没有一个@XmlRootElement(name="Order"),也没有名为Order的类
问题内容: 是否可以从多个源文件中构建一个内核模块,这些源文件中的一个与模块具有相同的名称? 例如:我要使用以下源文件构建“ mymodule.ko”: mymodule.c mymodule_func.c 这个makefile不起作用: 谢谢 问题答案: 我找到了解决方案,将源文件放在一个子文件夹中: 生成文件 src / mymodule.c src / mymodule_func.c