我正在尝试使用org.codehaus.mojo xmlbeans-maven-plugin为maven generate-sources过程生成OGC KML 2.2的java类。 Java代码似乎正确生成,但是在编译过程中我抱怨“包org.apache.xmlbeans”,因此出现大量错误。 XMLBeans显然是一个依赖项,它存在于我的〜/ .m2存储库中,并且我一直在jar中进行查看以确保这些类都在其中。看起来XMLBeans已成功在target / generated-sources中生成了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存储库中的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$


我已经浏览了许多示例,看来我做得很好。我还没有看到其他人抱怨过这个问题。任何行家有建议吗?

(一个奇怪的旁注是,尽管我尝试了xmlbeans依赖的2.4.0和2.6.0,但maven似乎从未将2.6.0版本下载到我的存储库中)

最佳答案

从问题中包含的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>

关于java - mvn generate-sources失败,为什么类路径上没有xml bean?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19440482/

10-10 06:35