gpt4 book ai didi

java - 如何以无配置方式将可选任务 sshexec 加载到 Ant 中?

转载 作者:行者123 更新时间:2023-11-29 09:30:48 25 4
gpt4 key购买 nike

我正在使用 sshexec,它依赖于 jsch-0.1.48.jar。我不能只把它放到 ant/lib 目录中,因为其他希望使用相同构建脚本的用户必须先在他们的机器上进行配置,然后才能这样做。

我想要做的是能够将 jsch-0.1.48.jar 作为项目的一部分进行引用。目前,我把它放在 project/libs 目录中,我正在尝试类似的东西:

<property name="lib" location="lib"/>

<taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec">
<classpath>
<pathelement location="${lib}/jsch-0.1.48.jar"/>
</classpath>
</taskdef>

<target name="sshcmd" description="ssh command">
<sshexec host="X.X.X.X" username="USER" password="PASS" command="cmd" trust="true"/>
</target>

但这行不通:

C:\dev\trunk\project:>ant sshcmd
Buildfile: C:\dev\trunk\project\build.xml

BUILD FAILED
C:\dev\trunk\project\build.xml:275: taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec cannot be found: com/jcraft/jsch/Logger
using the classloader AntClassLoader[C:\dev\trunk\project\lib\jsch-0.1.48.jar]

Total time: 0 seconds

最佳答案

sshexec task 内置于 ANT 中,您无需调用 taskdef 操作即可使用它。所缺少的只是 jsch jar 。

这可以使用如下引导目标安装(来自 Maven Central ):

<target name="bootstrap" description="Install missing jars">
<mkdir dir="${user.home}/.ant/lib"/>
<get src="http://search.maven.org/remotecontent?filepath=com/jcraft/jsch/0.1.48/jsch-0.1.48.jar" dest="${user.home}/.ant/lib/jsch.jar"/>
</target>

这个目标只需要运行一次,之后 ANT sshexec任务将在开发人员的 PC 上按预期工作。

更新

如果您不想下载 jars,请使用另一种机制从命令行传递 ANT 库的位置,如下所示:

ant -lib /path/to/project/lib/dir ...

关于ANT库管理的更多细节,我推荐给你ANT manual

关于java - 如何以无配置方式将可选任务 sshexec 加载到 Ant 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12752124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com