获取 ivy 管理的依赖项的 jar 路径的命令

Command to get paths to jars for ivy-managed dependencies

有没有办法获取 ivy 管理的依赖项的 JAR 文件路径,以便可以从命令行调用程序并且 JAR 文件都正确包含在 class 路径中。

类似的东西(对于 Linux bash 和类似的脚本):

java -cp `ivyget.sh ivy.xml`

然后可以扩展到

java -cp "/path/to/first.jar:/path/to/second.jar"

这样的事情可能吗?

Ivy 可以独立使用,参见 documentation。我在下面包含了一个例子。

虽然这是一个很棒的功能,但我更喜欢只使用 ivy 进行下载。如果您的 java 程序有选项(例如 -option1 或 --option2),那么 ivy 无法正确解析命令行。

例子

以下项目用于使用 liquibase

管理数据库模式
├── changesets
│   └── scottTiger.xml
├── ivy.xml
├── liquibase.properties
└── liquibase.sh

项目由运行 shell 脚本执行

./liquibase.sh update

liquibase.sh

#!/bin/bash
java -jar $HOME/.ant/lib/ivy.jar \
     -error \
     -ivy ivy.xml \
     -main liquibase.integration.commandline.Main \
     -args $@

ivy.xml

ivy 文件将 liquibase 和 H2 数据库项目作为依赖项拉入

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>
    <dependencies>
        <dependency org="org.liquibase" name="liquibase-core" rev="latest.release" conf="default"/>
        <dependency org="com.h2database" name="h2" rev="latest.release" conf="default"/>
    </dependencies>
</ivy-module>

liquibase.properties

运行-时间配置文件,其中DB类型设置为H2。

url=jdbc:h2:./db/scottTiger
driver=org.h2.Driver
username=user
password=pass
changeLogFile=changesets/scottTiger.xml
logLevel=info