【问题标题】:Ant Ivy: Producing text report of the runtime jarsAnt Ivy:生成运行时 jar 的文本报告
【发布时间】:2013-12-31 06:09:12
【问题描述】:

通常,当我们从 Ivy 下载 jar 时,我们会设置 pattern 以包含 jar 的版本号。

<ivy:retrieve
    pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]"
    log="${ivy.log}"/>

但是,对于这个项目,我们不能这样做。 jar 必须在没有版本 ID 的情况下下载:

<ivy:retrieve
    pattern="${lib.dir}/[conf]/[artifact].[ext]"/>

这个应用程序是通过覆盖已经存在的东西安装的。如果特定 jar 的修订版从一个版本更改为下一个版本,我们最终会得到该 jar 的旧版本和新版本,并且我们不知道正在使用哪个版本。删除修订信息可以轻松确保旧 jar 被替换为新版本。

但是,开发人员仍然想要一份简单的报告,说明下载了哪些版本的 jar 并将其放入构建的战争中,那么我该如何生成这样的报告。我正在查看ivy:report,但它不会生成文本报告。有一个 &lt;ivy:artifactreport/&gt; 任务,但它也会生成 XML 报告而不是文本报告。

我可以使用 Perl 或 Python 解析此报告,但我宁愿不使用可执行文件作为构建过程的一部分。否则,当开发人员进行构建时,他们必须确保这些外部程序已正确安装和配置。

有没有一种简单的方法可以生成纯文本报告?

【问题讨论】:

  • artifactreport 生成的 XML 可以使用 ANT xslt 任务转换为文本。
  • @MarkO'Connor 谢谢。我得调查一下。我想是时候学习一些 xslt 了。我正在尝试 xmlproperties 任务,但结果有点灾难。它最终将所有 jar 名称放在一个属性中,将所有修订放在另一个属性中,将所有组织放在另一个属性中。

标签: ant ivy


【解决方案1】:

使用 ANT xslt 任务生成 CSV 格式的文本文件

示例

├── build
│   └── ivy
│       ├── com.myspotontheweb-demo-compile.html
│       ├── com.myspotontheweb-demo-runtime.html
│       ├── com.myspotontheweb-demo-test.html
│       ├── ivy-report.css
│       ├── report.txt
│       └── report.xml
├── build.xml
├── ivy.xml
└── report.xsl

build.xml

<project name="demo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="resolve" description="Use ivy to resolve dependencies">
        <ivy:resolve/>

        <!-- Reports -->
        <ivy:report todir='build/ivy' graph='false' xml='false'/>

        <ivy:artifactreport tofile="build/ivy/report.xml"/>
        <xslt style="report.xsl" in="build/ivy/report.xml" out="build/ivy/report.txt"/>

    </target>

</project>

report.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:apply-templates select="modules/module/artifact"/>
  </xsl:template>

  <xsl:template match="artifact">
    <xsl:value-of select="../@organisation"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="../@name"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="../@rev"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="origin-location"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="cache-location"/>
    <xsl:text>
</xsl:text>
  </xsl:template>

</xsl:stylesheet>

report.txt

org.slf4j,slf4j-api,1.7.5,http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar,/home/mark/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.7.5.jar
org.slf4j,slf4j-log4j12,1.7.5,http://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar,/home/mark/.ivy2/cache/org.slf4j/slf4j-log4j12/jars/slf4j-log4j12-1.7.5.jar
log4j,log4j,1.2.17,http://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar,/home/mark/.ivy2/cache/log4j/log4j/bundles/log4j-1.2.17.jar
junit,junit,4.11,http://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar,/home/mark/.ivy2/cache/junit/junit/jars/junit-4.11.jar
org.hamcrest,hamcrest-core,1.3,http://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar,/home/mark/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.3.jar

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2017-06-15
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多