我正在修改一个Ant脚本(目前正在MyEclipse中使用)从命令行工作。我这样做是为了让任何人都可以签出项目并在没有MyEclipse的情况下构建它。我遇到的问题是MyEclipse包含幕后的依赖关系。它通过查看工作区的Ant配置并根据首选项对话框中选定的库编译类路径来实现此目的。长话短说,我需要采取这些依赖关系,并使脚本足够聪明,以便在没有MyEclipse帮助的情况下自行包含它们。Ant可选任务SSHExec和SCP出现问题。类路径问题?
让我头疼的任务是sshexec和scp任务。它们是可选的ant任务,需要运行一个jsch版本。我从MyEclipse的Ant类路径中删除了jsch,并将其添加到项目本身的lib文件夹(lib/dev)中。 MyEclipse立即抱怨说SSHExec类找不到依赖类com.jcraft.jsch.UserInfo
,它是jsch-0.1.44.jar的一部分。
我没有看到从构建脚本中为Ant设置类路径的方法。我有以下代码,它将一个path
元素添加到脚本中,但我不认为Ant会使用它,除非明确关联到任务或其他元素。
<path id="web-jars">
<fileset dir="${web-lib}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${app-lib}"> <!-- this is where jsch resides -->
<include name="**/*.jar" />
</fileset>
</path>
看来,我需要使用taskdef
定义sshexec和scp任务:
<taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="web-jars"/>
MyEclipse的抱怨这个,"taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec cannot be found: com/jcraft/jsch/UserInfo"
这显然是在classpathref,网络的罐子。由于这种格式错误或配置错误的taskdef,我无法在脚本中运行任何内容。
问题可以解决此问题 http://stackoverflow.com/a/39976060/3499805 – user3499805 2016-10-11 11:22:03