jarlib-resolve

描述

尝试找到一个 jar 文件来满足扩展要求,并将 jar 文件的位置放入属性中。该任务允许您添加多个解析器,这些解析器能够为特定扩展找到库。每个解析器将按照指定的顺序尝试,直到找到库或没有解析器剩余。如果没有任何解析器剩余并且 failOnError 为 true,则会抛出 BuildException

请注意,此任务使用“可选包”规范中定义的扩展。有关可选包的更多信息,请参阅 Java Standard Edition 包文档捆绑包中的文档可选包版本控制,位于文件 guide/extensions/versioning.html 中,或在线 扩展和扩展集文档 以获取更多详细信息。

参数

属性 描述 必需
property 要设置为库位置的属性名称。
failOnError 如果无法找到库,则 true 表示应导致构建异常。 否;默认为 true
checkExtension 如果嵌套解析器返回的库应该被检查以查看它们是否提供扩展,则为 true 否;默认为 true

作为嵌套元素指定的参数

extension

扩展 要解析的扩展。必须存在

location

location 嵌套元素允许您在相对于项目目录的位置查找库。

属性 描述 必需
location 库的路径名。

url

url 解析器允许您从 URL 下载库到本地文件。

属性 描述 必需
url 要下载的 URL。
destfile 要将 URL 下载到的文件。 两者中只有一个
destdir 放置下载文件的目录。

ant

ant 解析器允许您运行 Apache Ant 构建文件来生成库。

属性 描述 必需
antfile 构建文件。
destfile ant 构建创建的文件。
target 要在构建文件中运行的目标。

示例

将扩展解析为文件。如果文件不存在或文件未实现扩展,则抛出异常。

<extension id="dve.ext"
           extensionName="org.realityforge.dve"
           specificationVersion="1.2"
           specificationVendor="Peter Donald"/>

<jarlib-resolve property="dve.library">
  <extension refid="dve.ext"/>
  <location location="/opt/jars/dve.jar"/>
</jarlib-resolve>

将扩展解析为 URL。如果 URL 不存在或无法写入 destfile 或文件未实现扩展,则抛出异常。

<extension id="dve.ext"
           extensionName="org.realityforge.dve"
           specificationVersion="1.2"
           specificationVendor="Peter Donald"/>

<jarlib-resolve property="dve.library">
  <extension refid="dve.ext"/>
  <url url="https://www.example.com/jars/dve.jar" destfile="lib/dve.jar"/>
</jarlib-resolve>

将扩展解析为 Ant 构建生成的的文件。如果文件未生成或 Ant 文件丢失或构建失败,则抛出异常。(注意:不检查库是否实现扩展。)

<extension id="dve.ext"
           extensionName="org.realityforge.dve"
           specificationVersion="1.2"
           specificationVendor="Peter Donald"/>

<jarlib-resolve property="dve.library" checkExtension="false">
  <extension refid="dve.ext"/>
  <ant antfile="../dve/build.xml" target="main" destfile="lib/dve.jar"/>
</jarlib-resolve>

通过多种方法解析扩展。首先检查本地文件以查看它是否实现扩展。如果它没有,则尝试从并行目录中的源代码构建它。如果失败,则最后尝试从网站下载它。如果所有步骤都失败,则抛出构建异常。

<extension id="dve.ext"
           extensionName="org.realityforge.dve"
           specificationVersion="1.2"
           specificationVendor="Peter Donald"/>

<jarlib-resolve property="dve.library">
  <extension refid="dve.ext"/>
  <location location="/opt/jars/dve.jar"/>
  <ant antfile="../dve/build.xml" target="main" destfile="lib/dve.jar"/>
  <url url="https://example.com/jars/dve.jar" destfile="lib/dve.jar"/>
</jarlib-resolve>