如何使 Maven Javadoc 插件适用于任何 Java 版本

2023-12-31

我正在使用 Maven Javadoc 插件,如下所示

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我安装了多个 JDK 版本,并且希望能够使用其中任何一个版本构建项目。上述配置在 Java 8 上运行良好,但在 Java 11 上失败并出现以下错误

未能执行目标 org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (attach-javadocs) 在项目上...: MavenReportException: Error while 生成 Javadoc:无法找到 javadoc 命令:环境 变量 JAVA_HOME 未正确设置。

显而易见的解决方案是设置 JAVA_HOME。但正如我提到的,我有多个版本的 JDK,因此每次我想使用另一个版本时都重新配置 JAVA_HOME 一点也不方便。

另一种解决方案(来自无法找到 javadoc 命令 - maven https://stackoverflow.com/questions/13961615/unable-to-find-javadoc-command-maven)就是在插件中添加如下配置:

<configuration>
    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>

这使得它可以与 Java 11 一起使用,但会破坏 Java 8,因为javadoc位置是${java.home}/../bin/javadoc在这种情况下。

理想情况下我总是想使用javadoc从 Maven 使用的 java 可执行文件所在的目录,但我还没有找到使用 Maven Javadoc Plugin 执行此操作的方法。


Maven 配置文件 https://maven.apache.org/guides/introduction/introduction-to-profiles.html或许能帮上忙。

将这样的内容添加到您的 POM 中。

<profiles>
    <profile>
        <id>jdk-8-config</id>
        <activation>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
        </properties>
    </profile>
    <profile>
        <id>jdk-11-config</id>
        <activation>
            <jdk>11</jdk>
        </activation>
        <properties>
            <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
        </properties>
    </profile>
</profiles>

JDK 范围也是可能的,请阅读链接文档中的更多信息。

Maven 将选择用于运行自身的 Java 版本、激活正确的配置文件并定义正确的属性。

一个警告 - 通常我们构建JAVA_HOME设置,或者通过 Jenkins 可以配置为定义JAVA_HOME每份工作。这种方法在这些情况下效果很好。

您还可以研究 Maven 工具链。我对这些没有任何经验,除了阅读之外,它们还有助于更轻松地定义各种机器上的工具位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 Maven Javadoc 插件适用于任何 Java 版本 的相关文章

  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • 如何使用 SLF4J 和 Log4j2 记录 FATAL(或任何自定义日志级别)

    我有那些具体的要求 需要能够登录FATAL level 需要使用SLF4J 需要使用Log4j2 现在 这是我的执行 final Logger logger LoggerFactory getLogger HelloWorld class
  • JPanel透明背景和显示元素[重复]

    这个问题在这里已经有答案了 我插入一个背景图e 变成 aJPanel但一些界面元素消失了 以下 Java Swing 元素不会出现 标签标题 标签 usuario 标签 密码 按钮加速器 你能否使图像透明或元素不透明 setOpaque f
  • 使用 Java 编程式 HTML 文档生成

    有谁知道如何在 Java 中以编程方式生成 HTMLDocument 对象 而不需要在外部生成字符串 然后使用 HTMLEditorKit read 来解析它 我问的两个原因 首先 我的 HTML 生成例程需要非常快 并且我认为将字符串解析
  • 从 eclipse 运行时 java.io.FileNotFoundException: (没有这样的文件或目录)

    我正在写入文件并想要控制台输出 TODO Create a game engine and call the runGame method public static void main String args throws Excepti
  • 如何在 OpenAPI 3.0 中定义字节数组

    我正在将 API 从 Swagger 2 0 迁移到 OpenAPI 3 0 在 DTO 中 我有一个指定为字节数组的字段 Swagger 对 DTO 的定义 Job type object properties body type str
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • Vertx HttpClient getNow 不工作

    我的 vertx HttpClient 有问题 下面的代码显示使用 vertx 和纯 java 测试 GET Vertx vertx Vertx vertx HttpClientOptions options new HttpClientO
  • java JFileChooser 文件大小过滤器

    我知道我可以按文件类型进行过滤 但是可以按文件大小进行过滤吗 例如 JFileChooser 仅显示 3 MB 以内的图片 简短的回答应该是 你尝试过什么 长答案是肯定的 JFileChooser fc new JFileChooser f
  • 当容器大小更改时,JTable 仅调整选定列的大小

    对于面板内的 JTable 如果面板变大 我如何将额外的空间仅分配给某些列 在我的例子中 分配给最后一列 尽管提供 第 3 4 列和8 将获得额外的空间 我想允许用户手动更改所有列的列大小 我尝试了 table setAutoResizeM
  • 字节码和位码有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 LLVM 和 java 字节码有什么区别 https stackoverflow com questions 454720 what are the differences between llvm
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 存储过程将多个表返回到 spring jdbc 模板

    我正在使用 JdbcTemplate 从 Spring DAO 类调用存储过程 我的问题是 存储过程返回多个表 有没有办法使用 Spring JdbcTemplate 访问多个表 如果我使用jdbcTemplate queryForList
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • Android 中的字符串加密

    我正在使用代码进行加密和加密 它没有给出字符串结果 字节数组未转换为字符串 我几乎尝试了所有方法将字节数组转换为字符 但没有给出结果 public class EncryptionTest extends Activity EditText
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s
  • 如何使用 Spring AOP 建议静态方法?

    在执行类的静态方法之前和之后需要完成一些日志记录 我尝试使用 Spring AOP 来实现这一点 但它不起作用 而对于正常方法来说它起作用 请帮助我理解如何实现这一点 如果可以使用注释来完成 那就太好了 也许您应该在使用 Spring AO

随机推荐

  • 在 Windows 批处理文件的 FOR 循环中转义星号

    在 Windows 批处理文件中运行以下代码时 除了包含星号的字符串 被跳过 之外 所有内容都正常运行 按编号检查传递的参数 即echo 6 我可以看到星号 只有当传递到 FOR 循环时我才会遇到问题 echo off setlocal e
  • 如何自定义生成的 javadoc 存根?

    在 Netbeans 中 当您键入 在上面的方法中 它生成一个 javadoc 存根 param return 如何自定义生成的文本 我想要一个自定义 javadoc 存根 例如 Author author My custom text p
  • 如何使用 C# 连接到 Google Cloud SQL Server?

    我刚刚在 Google Cloud Platform 上设置了一个 SQL Server 我在那里创建了一个数据库和表 我使用微软的 SQL Server Management Studio SSMS 来连接并创建数据库和表 这一切都奏效了
  • 具有列名的多个列的最大值?

    我已经探索了许多关于如何从多个列中返回最大值以及列名的问题和答案 但我还没有解决问题 在这个问题中将解释 SQL MAX 多列 https stackoverflow com questions 71022 sql max of multi
  • 在 R 文本清理中删除标点符号但保留连字符短语

    有没有有效的方法可以删除文本中的标点符号 但保留连字符的表达方式 例如 容易发生事故 我使用以下函数来清理我的文本 clean text function x remove rt x gsub rt x remove at x gsub w
  • 网站上的弹出窗口每个会话加载一次[重复]

    这个问题在这里已经有答案了 我找到了一些制作 javascript jquery 弹出窗口的方法 但是 也存在一些问题 首先 我对这两种语言不是很好 只是初学者 如果有任何现成的代码 用于在网站加载时打开 POPUP 窗口 但每个浏览器会话
  • 如何强制 Linq to SQL 不使用缓存?

    当我两次进行相同的查询时 第二次它不会从数据库返回新行 我猜它只是使用缓存 这是一个 Windows 窗体应用程序 我在应用程序启动时在其中创建 dataContext 如何强制 Linq to SQL 不使用缓存 这是我遇到问题的示例函数
  • 如何在页面加载时激活 JS 数据过滤器?

    我正在这个网站上工作http fireworkslove com http fireworkslove com 我制作了具有不同类别 推荐 新闻等 的导航 我想在页面打开时显示 推荐 类别 data filter recommended 现
  • Erlang - 未定义的函数

    我正在尝试执行一个非常简单的 Erlang 代码 但它不起作用 我尝试过毫无问题地执行一些 hello worlds 但不是我自己的代码 module server Exported Functions export start 0 pro
  • 将组件的首选尺寸保留在 BorderLayout 的中心

    我有一个使用 BorderLayout 的中型 UI 中心是一个选项卡式窗格 包含具有各种布局的各种面板等 我希望该边框布局中心的面板根据以下尺寸调整大小 窗口 但我不希望面板内的组件拉伸 标签 组合框 文本字段 按钮 我希望它们保持首选大
  • 什么时候可以使用 Java 中的浮点类型进行货币计算?

    我了解到我不能使用浮点类型 float double在Java中 进行金钱计算 以及当我需要精确结果时的任何其他计算 我必须使用decimal数字类型 BigDecimal在 Java 中 代替 现在我想知道当我can使用浮点类型 他们提供
  • 使用 Convert.ToDouble 时出现异常

    我正在制作一个库存程序 要求用户输入他们想要购买的不同数量的不同物品 我使用此行将项目数转换为双精度数 以便我可以计算 但出现错误 指出我有未处理的格式异常 输入字符串的格式不正确 我有什么遗漏的吗 itembatteries Conver
  • Python Pandas 使用新的 x 轴进行插值

    我想对以下结构的 Pandas 系列进行插值 X 22 88 3 047 45 75 3 215 68 63 3 328 91 50 3 423 114 38 3 516 137 25 3 578 163 40 3 676 196 08 3
  • Jquery - 模拟点击按钮不触发功能

    Ok 所以我一直在使用 firebug 以及我编写的一些扩展来在我经常使用的网站上创建快捷方式 有件事我不明白为什么它不起作用或为什么它不可能 示例代码
  • 如何删除 mouseleave 上的下一个追加?

    我的代码有问题 当我mouseenter一个元素 一个工具栏被附加到这个元素上 但是当我mouseleave从工具栏到元素 工具栏会再次附加 我怎样才能防止这种重新附加 el on mouseenter function e var too
  • Android Studio 创建密钥库错误

    我想通过 Android Studio 生成签名的 APK 这是我的第一个应用程序 所以我需要创建新的密钥库 但是 当我填写文本框并单击 确定 时 出现错误 消息如下 密钥库已导出 但显示错误让我不敢使用它 创建密钥时出现错误 选择 JAV
  • R - 箱线图中的排序

    我正在尝试制作一系列箱形图R由 2 个因素分组 我已经成功地绘制了图 但我无法将盒子按正确的方向排序 我正在使用的数据场如下所示 Nitrogen Species Treatment 2 G L 3 R M 4 G H 4 B L 2 B
  • 更改/设置 gcloud 操作系统登录用户名?

    这么简单的问题 我正在向我的计算引擎添加一个新帐户 我添加了用户和角色以及所有有趣的东西 现在我想添加 ssh 密钥 我通过运行来执行此操作gcloud compute os login ssh keys add key file 这工作正
  • 如何让 Jest 静默测试抛出的错误

    我正在编写一个测试来断言如果提供了一个 prop 而没有提供另一个 prop 则组件会抛出错误 测试本身通过了 但控制台仍然抱怨未捕获的错误并打印整个堆栈跟踪 有没有办法让 Jest 停止打印此信息 因为它会污染测试运行程序并使其看起来像是
  • 如何使 Maven Javadoc 插件适用于任何 Java 版本

    我正在使用 Maven Javadoc 插件 如下所示