【问题标题】:How to avoid checking parent project in maven-site-plugin?如何避免在 maven-site-plugin 中检查父项目?
【发布时间】:2014-05-11 20:18:16
【问题描述】:

我有一个小型 Maven 项目。我正在尝试通过 maven-site-plugin 添加生成站点,但它不起作用。当我构建这个项目时,我收到以下错误:

[错误] 无法在项目 server-wms-product 上执行目标 org.apache.maven.plugins:maven-site-plugin:3.3:site (default-site): SiteToolException: 无法从存储库:ArtifactResolutionException:无法找到站点描述符:无法将工件 [PARENT-PROJECT]:xml:site_en:1.0.141.1 从/向 Eclipse 传输(http://maven.eclipse.org/nexus/content/repositories/testing/):与 http://maven.eclipse.org 的连接被拒绝

我的项目是其他项目的扩展,所以在我的 pom.xml 中设置了不是我的父项目,我不能在那里添加站点配置。

那么有没有机会在站点生成中跳过检查父项目的站点?

我的 pom.xml 看起来像这样:

   <project>
       <parent>
        <artifactId>base-server-product</artifactId>
        <groupId>XXXXXXXXXXXx</groupId>
        <version>1.0</version>
    </parent>
        <build>
             <plugins>
                <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-site-plugin</artifactId>
                   <version>3.3</version>
                   <configuration>
                      <reportPlugins>
                      </reportPlugins>
                   </configuration>
                </plugin>
             </plugins>
       </build>
    </project>

当然我在 src/site 中有 site.xml 文件。

【问题讨论】:

  • 我假设您的问题是基于此定位的:Connection to http://maven.eclipse.org refused
  • 不,maven.eclipse.org 的这个错误仅显示 maven 搜索了我的存储库并且没有找到父项目的 site.xml(因为它不存在并且永远不会存在)。之后,maven 正在尝试在其他存储库中查找。但这没有任何意义。真正的问题是,在我的项目中,maven 不应该尝试搜索partent 的 site.xml,因为它不会退出。
  • 我今天遇到了这个错误。解决方案是删除复制粘贴在父 pom 中的虚拟 ... 条目。似乎 maven 网站在为孩子们生成网站时以某种方式使用了这个 url。 (这可能对未来的读者有所帮助,但我知道它并不能真正回答问题,因为在这种情况下@daprog 无法访问父 pom)

标签: maven maven-site-plugin


【解决方案1】:

attaching the site descriptor 配置到父 pom 中的工件。

<project>
  <artifactId>base-server-product</artifactId>
  <groupId>XXXXXXXXXXXx</groupId>
  <version>1.0</version>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-descriptor</id>
            <goals>
              <goal>attach-descriptor</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

在 maven 3 中,核心功能已与站点生成分离。您可以找到原因 here。如果要从子模块引用父模块的站点,则必须将 site.xml 附加到已部署的工件。

【讨论】:

    【解决方案2】:

    我也有同样的问题,经过多次谷歌搜索,发现这篇文章解决了我的问题:

    http://amanica.blogspot.com/2010/08/archiva-gives-maven-site-plugin-invalid.html?m=1

    基本上你想在你的父 pom.xml 中添加一个基本的 site_en.xml 到 /src/site/ 文件夹。

    【讨论】:

    • 感谢您的帮助,经过一些小改动后它对我有用 - 我必须将此文件作为 PARENTPOM-VERSION-site_en.xml 添加到我的本地存储库中。
    • 这个答案对我不起作用。虽然我最终能够解析父 POM 的(空)site_en.xml,但我现在卡住了,因为插件正在尝试解析我无法控制的祖父 POM 的站点描述符。我只想生成一个站点,而无需咨询父 POM。
    【解决方案3】:

    出于某种我无法理解的原因,对我来说,在离线模式下运行一次 maven 就足够了。

    【讨论】:

    • 同样的事情发生在我身上......它似乎在尝试本地 m2 之前在远程仓库中寻找父描述符!
    【解决方案4】:

    我在处理我不拥有的开源项目时遇到了这个问题,我想向以这种方式生成的网站提交更新。我想在本地测试和查看更改,但一直遇到此错误。

    用户@Frischling 在上面提到了这一点(归功于他们)。事实证明,我想要的不是编辑任何现有信息或更新任何 pom.xml 文件,而是完全在离线模式下构建。

    我试图运行此命令,但由于原始海报提到的错误而失败:

    mvn site
    

    要改为离线构建,请执行以下命令:

    # Download the dependencies for the target
    mvn dependency:go-offline site
    
    # Build the target offline
    mvn --offline site
    

    然后像我预期的那样正确地将输出生成到target/site 目录。

    如果您拥有项目或项目的一部分,这并不理想,但对于像我这样我不拥有它的情况,这是完美的选择。

    【讨论】:

      【解决方案5】:

      以前的答案对我不起作用。

      但马克的一个,在这里,解决了我遇到的问题:https://stackoverflow.com/a/57429991/5056068

      艾蒂安

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 1970-01-01
        • 2017-05-28
        • 2014-07-02
        • 1970-01-01
        • 2015-10-07
        • 2012-12-09
        相关资源
        最近更新 更多