【问题标题】:mvn generate-sources fails, why isn't xml beans on classpath?mvn generate-sources 失败,为什么类路径上没有 xml bean?
【发布时间】:2020-08-06 14:20:17
【问题描述】:

我正在尝试使用 org.codehaus.mojo xmlbeans-maven-plugin 为 OGC KML 2.2 生成 java 类,作为 maven generate-sources 过程的一部分。 java 代码似乎生成正确,但在编译过程中我收到大量错误,抱怨“package 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/ 的两个 xsd。整个文件夹结构在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$ 

我查看了许多示例,似乎我做得对。我没有看到其他人抱怨这个问题。任何maven maven有建议吗?

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

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

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

    【讨论】:

    • 太棒了,谢谢!我是 maven 的新手,我根本不需要 dependencyManagement 标签。我能够从 POM 中删除这两个标记行并且它起作用了。我的问题是误解,在我引用的 Maven 示例中,dependencyManagement 不是依赖项的必要外部标记。
    【解决方案2】:

    一个可能看起来相似的附加问题,
    检查您的 java install jdk 和 ext 文件夹中是否有旧的 bean jar。
    该插件将项目依赖项放在类路径的末尾。

    【讨论】:

      猜你喜欢
      • 2012-10-08
      • 1970-01-01
      • 2011-08-19
      • 2023-04-09
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2021-05-17
      • 2012-07-25
      相关资源
      最近更新 更多