Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取远程JAR的清单信息_Java_Ant_Jar_Versioning - Fatal编程技术网

Java 获取远程JAR的清单信息

Java 获取远程JAR的清单信息,java,ant,jar,versioning,Java,Ant,Jar,Versioning,我必须管理这样一种情况,即我在各种服务器环境上发布了多个JAR,但没有适当的发布策略 这意味着,除非我明确检查,否则我无法知道给定服务器上发布了哪个版本 我正在推动实施这样一项政策,但在此之前,我一无所知 无论如何,我设法在构建脚本中插入了一些基本信息(时间戳、运行构建的用户)的价值化,因此我有一些基本数据来控制情况 我想做的是阅读这些信息,然后编写一份报告,告诉我总体情况 我当然可以用两种方式自己编写脚本: -从每个服务器下载JAR并提取清单信息; -运行提取清单并返回信息的远程实用程序 是否

我必须管理这样一种情况,即我在各种服务器环境上发布了多个JAR,但没有适当的发布策略

这意味着,除非我明确检查,否则我无法知道给定服务器上发布了哪个版本

我正在推动实施这样一项政策,但在此之前,我一无所知

无论如何,我设法在构建脚本中插入了一些基本信息(时间戳、运行构建的用户)的价值化,因此我有一些基本数据来控制情况

我想做的是阅读这些信息,然后编写一份报告,告诉我总体情况

我当然可以用两种方式自己编写脚本: -从每个服务器下载JAR并提取清单信息; -运行提取清单并返回信息的远程实用程序


是否有一些工具/脚本/ant任务能够完成此任务,或者我应该自己编写一个吗?

您需要进入每个jar。如果您知道它们的位置—假设它们都部署在一个位置(或根文件夹)下—您可以有一个脚本,该脚本将使用jar、grepfind的组合

for i in *.jar; do jar -tvf .... 

我真的想不出另一种方法。我在这里找到了部分答案:


这是我完成任务所需要的基本材料。

我不知道ant中有任何现有的解决方案。
<project>

    <!-- Get a jar -->
    <copy file="${ant.home}/lib/ant.jar" todir="."/>

    <!--
    Loads entries from a manifest file.
    @jar     The jar from where to read
    @prefix  A prefix to prepend
    -->
    <macrodef name="loadmf">
        <attribute name="jar"/>
        <attribute name="prefix" default=""/>
        <sequential>
            <loadproperties>
                <!-- Load the manifest entries -->
                <zipentry zipfile="@{jar}" name="META-INF/MANIFEST.MF"/>
                <!-- Add the prefix -->
                <filterchain>
                    <prefixlines prefix="@{prefix}"/>
                </filterchain>
            </loadproperties>
        </sequential>
    </macrodef>

    <!-- Read mf entries -->
    <loadmf jar="ant.jar" prefix="ant-mf."/>
    <!-- Print them -->
    <echoproperties prefix="ant-mf."/>

</project>
Buildfile: C:\dev\ant\build.xml
     [copy] Copying 1 file to C:\dev\ant
[echoproperties] #Ant properties
[echoproperties] #Wed Jan 25 12:02:09 CET 2012
[echoproperties] ant-mf.=
[echoproperties] ant-mf.Ant-Version=Apache Ant 1.8.1
[echoproperties] ant-mf.Created-By=1.5.0_22-b03 (Sun Microsystems Inc.)
[echoproperties] ant-mf.Extension-name=org.apache.tools.ant
[echoproperties] ant-mf.Implementation-Title=org.apache.tools.ant
[echoproperties] ant-mf.Implementation-Vendor=Apache Software Foundation
[echoproperties] ant-mf.Implementation-Version=1.8.1
[echoproperties] ant-mf.Main-Class=org.apache.tools.ant.Main
[echoproperties] ant-mf.Manifest-Version=1.0
[echoproperties] ant-mf.Name=org/apache/tools/ant/
[echoproperties] ant-mf.Specification-Title=Apache Ant
[echoproperties] ant-mf.Specification-Vendor=Apache Software Foundation
[echoproperties] ant-mf.Specification-Version=1.8.1

BUILD SUCCESSFUL
Total time: 2 seconds