我正在修改一個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