java जियो - मैं वैकल्पिक कार्य sshexec को एंट में एक ना-कॉन्फ़िगरेशन तरीके से कैसे लोड कर सकता हूं?




जाते किए (3)

मैं sshexec का उपयोग कर रहा हूँ, जो jsch-0.1.48.jar पर निर्भर करता है। मैं इसे सिर्फ चींटी / लिब निर्देशिका में नहीं डाल सकता क्योंकि अन्य प्रयोक्ताओं को उसी बिल्ड स्क्रिप्ट का उपयोग करने के इच्छुक होने से पहले वे ऐसा कर सकते हैं, इससे पहले कि वे अपने मशीन पर कॉन्फ़िगरेशन कर सकें।

मैं परियोजना के भाग के रूप में जेएससी-0.1.48.jar का संदर्भ देने में सक्षम होना चाहता हूं। वर्तमान में, मैं इसे प्रोजेक्ट / लिब्स निर्देशिका में बैठा कर रहा हूं और मैं ऐसा कुछ करने की कोशिश कर रहा हूं:

<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

Answers

Sshexec कार्य एएनटी में बनाया गया है, आप इसे उपयोग करने के लिए एक taskdef ऑपरेशन को लागू करने की जरूरत नहीं है। जो कुछ भी गायब है वह जेएससीए जार है।

यह निम्नानुसार एक बूटस्ट्रैप लक्ष्य का उपयोग कर स्थापित किया जा सकता है ( मेवेन सेंट्रल से ):

<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 -lib /path/to/project/lib/dir ...

एएनटी पुस्तकालय प्रबंधन के बारे में अधिक जानकारी के लिए, मैं आपको एएनटी मैनुअल को देखें


जेसीपी जार मेरी परियोजना के साथ पैक किया गया है तो इसे डाउनलोड करने के बजाय, मैं इसे चींटी लाइब्रेरी में कॉपी कर रहा हूं। यह पहली बार चलने में असफल होगा, जो मेरे उद्देश्यों के लिए ठीक है। यह दूसरी बार सफल होगा क्योंकि जार पुस्तकालय में होगा और शुरू में लोड किया जाएगा।

<target name="jschset" description="Set the jar">   
    <copy file="${lib}/jsch-0.1.48.jar" tofile="${ant.home}/lib/jsch-0.1.48.jar"/>
</target>

बोल्ड चयनित टेक्स्ट को src = "lib / org.eclipse.swt.win32.win32.x86_3.5.2.v3557f.jar " में बदलें linux- निर्दिष्ट swt jar-file के साथ







java ant ssh jsch