1

これを perl で行うのは少し難しすぎるかもしれませんが、誰かが少なくともこれを達成するための正しい方向性を見つけるのを手伝ってくれることを願っています。

現在、すべての .jar ファイルを保持している Nexus サーバーがあります。アプリケーションの 1 つは、.properties ファイルで定義されているサードパーティの共通 jar を使用する必要があります。

プロパティファイルは次のようになります

commons-logging=commons-logging-1.1.1.jar
commons-io=commons-io-2.3.jar
httpcore=httpcore-4.2.1.jar

このプロパティ ファイルをざっと読み、そのバージョン (commons-logging-1.1.1.jar) を他の場所にあるバージョンと比較する Perl スクリプトを作成するように求められています。プロパティ ファイルのバージョンが同じでない場合は、新しい .jar ファイルが共通の jar の場所にコピーされます。

例 C:\commons には commons-logging-1.1.0 があります

プロパティ ファイルでは、commons-logging=commons-logging-1.1.1.jar が必要であると指定されています。次に、perl スクリプトは .properties ファイルを読み取り、commons-logging-1.1.1 が commons フォルダーにある commons-logging-1.1.0 と同じではないことを判断し、それを置き換えます。

このようなものに maven を使用することもできますが、開発者がプロ​​パティ ファイルで必要な jar を定義し、特定のフォルダーで置き換えることができるようにする方法がわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

依存関係管理クライアントの作成を依頼されたようですね。

便利なコマンドライン クライアントを備えた Apache ivy を使用することをお勧めします。

このツタのコマンド:

java -jar ivy.jar -ivy ivy.xml -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]"

ivy ファイルにリストされている jar が取り込まれた「lib」ディレクトリを作成します。

├── ivy.xml
└── lib
    ├── commons-io-2.3.jar
    ├── commons-logging-1.1.1.jar
    └── httpcore-4.2.1.jar

このアプローチの真の利点は、ivy が推移的な依存関係もダウンロードすることです。

さらに、ivy は以前にダウンロードしたファイルをキャッシュします。つまり、古いディレクトリを削除して、ivy に jar を含む新しいディレクトリを作成させる方が簡単です。(ファイルを比較する努力をするのではなく)

アイビー.xml

<ivy-module version="2.0">
    <info organisation="myorg" module="mymodule" />
    <dependencies>
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="default"/>
        <dependency org="commons-io" name="commons-io" rev="2.3" conf="default"/>
        <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.2.1" conf="default"/>
    </dependencies>
</ivy-module>
于 2012-11-29T06:08:12.043 に答える