maven-site-plugin An API incompatibility was encountered问题及编码utf-8/gbk 的不可映射字符...

在升级maven-site-plugin到3.0版本后,遇到API不兼容错误。参照文章解决了该问题,调整了插件版本以符合Maven 3的兼容性要求。同时,为消除'编码utf-8/gbk的不可映射字符'警告,将项目编码设置为UTF-8,并在pom.xml中进行相关配置,确保源码和站点文档的编码正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 按照百度文库上一篇文章(http://wenku.baidu.com/view /0477e440a8956bec0975e394.html)配置maven site plugin,当将版本号由3.0-beta-3改为 3.0 运行 mvn site 时出现错 误:An API incompatibility was encountered while executing org.apache.maven.plugins:maven-site-plugin:3.0:site。该错误详细信息如下:

 

 

realm =    plugin>org.apache.maven.plugins:maven-site-plugin:3.0
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] =
file:/Users/nodje/.m2/repository/org/apache/maven/plugins/maven-site-plugin/3.0/maven-site-plugin-3.0.jar
urls[1] =
file:/Users/nodje/.m2/repository/org/apache/maven/reporting/maven-reporting-exec/1.0.1/maven-reporting-exec-1.0.1.jar
urls[2] =
file:/Users/nodje/.m2/repository/org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar
urls[3] =
file:/Users/nodje/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar
urls[4] = file:/Users/nodje/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
urls[5] =
file:/Users/nodje/.m2/repository/velocity/velocity/1.5/velocity-1.5.jar
urls[6] =
file:/Users/nodje/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
urls[7] =
file:/Users/nodje/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[8] =
file:/Users/nodje/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[9] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
urls[10] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
urls[11] =
file:/Users/nodje/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[12] =
file:/Users/nodje/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[13] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.2/doxia-sink-api-1.2.jar
urls[14] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-logging-api/1.2/doxia-logging-api-1.2.jar
urls[15] =
file:/Users/nodje/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
urls[16] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-core/1.2/doxia-core-1.2.jar
urls[17] =
file:/Users/nodje/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
urls[18] =
file:/Users/nodje/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar
urls[19] =
file:/Users/nodje/.m2/repository/org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
urls[20] =
file:/Users/nodje/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
urls[21] =
file:/Users/nodje/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar
urls[22] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.2/doxia-module-xhtml-1.2.jar
urls[23] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.2/doxia-module-apt-1.2.jar
urls[24] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.2/doxia-module-xdoc-1.2.jar
urls[25] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.2/doxia-module-fml-1.2.jar
urls[26] =
file:/Users/nodje/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
urls[27] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.2/doxia-decoration-model-1.2.jar
urls[28] =
file:/Users/nodje/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.2/doxia-site-renderer-1.2.jar
urls[29] =
file:/Users/nodje/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
urls[30] =
file:/Users/nodje/.m2/repository/org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.jar
urls[31] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar
urls[32] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar
urls[33] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
urls[34] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar
urls[35] =
file:/Users/nodje/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar
urls[36] =
file:/Users/nodje/.m2/repository/org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar
urls[37] =
file:/Users/nodje/.m2/repository/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar
urls[38] =
file:/Users/nodje/.m2/repository/org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar
urls[39] =
file:/Users/nodje/.m2/repository/commons-lang/commons-lang/2.5/commons-lang-2.5.jar
urls[40] =
file:/Users/nodje/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

     (参见:http://comments.gmane.org/gmane.comp.jakarta.turbine.maven.user/123151)  与该文错误一致。

 

       按照上文描述,可能是由于maven版本变换引起的问题,Plugins Compatibility Matrix for Maven 3中 有对Maven 3下maven-site-plugin可使用插件版本的要求。另外一个问题是,文库(http://wenku.baidu.com /view/0477e440a8956bec0975e394.html)中使用的是:jxr-maven-plugin 插件:

<plugin>         

     <groupId>org.codehaus.mojo</groupId>          

    <artifactId>jxr-maven-plugin</artifactId>         

</plugin>

 

      将其修改成:

 

<plugin>         

     <groupId>org.apache.maven.plugins</groupId>          
      <artifactId>maven-jxr-plugin</artifactId> 

</plugin>

 

      并确认Maven 3下maven-site-plugin各插件版本是否符合要求,再次运行 mvn clean site命令即可编译成功。

 

    另在运行mvn site 时出现”编码utf-8/gbk 的不可映射字符“的 警告,导致生成的apidocs中的汉字是乱码。需要将工程编码格式设置成UTF-8(选中项目——>Project——》Properties ——》Resource——》Text file encoding——》Other:UTF-8),并在pom.xml中进行相应配置:

1

<build>
      <pluginManagement>
          <plugins>
              <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>2.3.2</version>
                 <configuration>
                     <source>1.5</source>
                     <encoding>UTF-8</encoding>
                 </configuration>
              </plugin>
          </plugins>
      </pluginManagement>
  </build>

 

2

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 

3

<build>

   <pluginManagement>
          <plugins>
              <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-site-plugin</artifactId>
                 <version>3.0</version>
                 <configuration>
                     <locales>zh_CN</locales>
                     <outputEncoding>UTF-8</outputEncoding>

                       ............................

                </configuration>
              </plugin>
          </plugins>
      </pluginManagement>
  </build>

### 解决方案 当向 Maven 项目中添加模块时遇到 `null` 报错的情况,通常可能是由多种因素引起的。以下是可能的原因及其对应的解决方案: #### 1. **API 不兼容** 如果报错信息中有类似于 `An API incompatibility was encountered...` 的提示,则表明当前使用的插件版本与依赖环境不匹配[^3]。 - 需要检查项目的 `pom.xml` 文件中的插件配置是否正确。 - 如果涉及 Jetty 插件或其他特定插件,建议更新到最新稳定版或者降级至已知兼容的版本。 #### 2. **测试框架冲突** 某些情况下,Maven 默认会运行单元测试,而这些测试可能导致构建失败。可以通过禁用测试来排查问题。具体操作是在对应子模块的 `pom.xml` 中加入以下配置片段[^2]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> ``` 此配置可临时跳过测试阶段,从而帮助定位其他潜在问题。 #### 3. **JDK 版本不适配** 部分 Maven 构建工具或插件对 JDK 版本有严格的要求。例如,在处理 HBase 或者其他复杂框架时,可能会因为 JDK 版本差异而导致编译错误[^4]。 - 建议切换到推荐的 JDK 版本(如 JDK 15),并重新执行构建命令。 - 同时注意调整 IDE 设置以确保其使用的是指定的 JDK 路径。 #### 4. **缺少必要的 Archetype 定义** 对于新建模块时出现 `archetype` 错误的情形,需确认所选模板是否存在以及是否适合目标用途。如果没有显式定义任何 archetypes,默认会选择标准 Java 库结构作为基础模型。 可以在创建新模块之前手动编辑根目录下的父 POM 文件,增加如下内容: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <packaging>pom</packaging> <modules> <!-- 子模块列表 --> <module>sub-module-name</module> </modules> <dependencyManagement> <dependencies> <!-- 统一管理各子模块共享依赖 --> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <!-- 全局统一插件版本控制 --> </plugins> </pluginManagement> </build> </project> ``` 通过上述方式预先声明好所有需要用到的信息后再次尝试即可减少此类异常发生的概率[^1]。 --- ### 提高 Maven 导入效率的小技巧 为了加快后续开发流程中的依赖加载速度,还可以考虑以下几个方面优化设置: - 修改本地仓库路径为 SSD 上的位置; - 开启多线程下载模式(`mvn -T`); - 缓存远程资源镜像地址(如阿里云 Nacos)等措施都能有效提升整体性能表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值