我正在尝试使用org.codehaus.mojo xmlbeans-maven-plugin为OGC KML 2.2生成java类,作为maven generate-sources进程的一部分。 java代码似乎是正确生成的,但是我在编译过程中遇到了很多错误,抱怨'package org.apache.xmlbeans'。 XMLBeans显然是一个依赖项,它存在于我的〜/ .m2存储库中,我一直在查看jar以确保类存在。看起来XMLBeans在目标/生成源中成功生成了java文件,但在编译过程中它不存在于类路径中。
我已经尝试更改org.apache.xmlbeans依赖项的范围,但无济于事。
这是pom.xml
<modelVersion>4.0.0</modelVersion>
<groupId>net.opengis</groupId>
<artifactId>ogc-kml</artifactId>
<version>2.2.0</version>
<packaging>pom</packaging>
<name>ogc-kml</name>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
<version>2.3.3</version>
<executions>
<execution>
<goals>
<goal>xmlbeans</goal>
</goals>
</execution>
</executions>
<inherited>true</inherited>
<configuration>
<download>true</download>
<schemaDirectory>src/main/xsd</schemaDirectory>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
该项目包含一个src / main / xsd文件夹,其中包含http://schemas.opengis.net/kml/2.2.0/的两个xsds。整个文件夹结构位于https://github.com/iancw/maven-xmlbeans-question。
如果我将〜/ .m2 repo中的xmlbeans jar放在类路径上,我可以手动编译类,例如。
xmlbeans$ javac -classpath ~/.m2/repository/org/apache/xmlbeans/xmlbeans/2.4.0/xmlbeans-2.4.0.jar org/w3/x2005/atom/*.java org/w3/x2005/atom/impl/*.java net/opengis/kml/x22/*.java x0/oasisNamesTcCiqXsdschemaXAL2/*.java x0/oasisNamesTcCiqXsdschemaXAL2/impl/*.java net/opengis/kml/x22/*.java net/opengis/kml/x22/impl/*.java
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
xmlbeans$
我已经看了很多例子,看起来我做得对。我还没有看到有人抱怨这个问题。任何maven专家都有建议吗?
(一个奇怪的旁注是虽然我已经尝试了2.4.0和2.6.0的xmlbeans依赖,但maven似乎从未将2.6.0版本下载到我的存储库中)
答案 0 :(得分:2)
您在问题中包含的POM文件中,您只在dependencyManagement
部分中定义了 xmlbeans 依赖关系。您还需要在POM的dependencies
部分中定义它,然后才能在构建时将其包含在类路径中。
例如,您的POM将是:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
...
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</dependencies>
答案 1 :(得分:0)
一个看起来类似的其他问题,
检查Java安装jdk和ext文件夹中是否有较旧的bean jar。
该插件将项目依赖项放在类路径的末尾。