maven - मेवेन एंट्रन एसएसएच या एससीपी आउटपुट को छुपाता है




ssh ant scp (3)

मैं एमएसएन में एंट्रूट का उपयोग करके एसएसएच और एससीपी कमांड चलाने के लिए चाहता हूं।
ssh और scp आदेश ठीक से चलते हैं, और अगले चरणों में घोषित प्लगइन्स - चलाएँ। लेकिन ssh / scp के बाद सभी आदेशों का आउटपुट किसी भी आउटपुट पर लिखा नहीं है!

समस्या क्या है?!

यहां मेरा pom.xml है:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>0.0.0-1-SNAPSHOT</version>
    <name>name</name>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>echoKuku</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <sshexec verbose="true" output="o.txt" failonerror="false" host="${Ip}" trust="yes"
                                    username="${UserName}" command="echo kuku" keyfile="${Keyfile}" />
                                <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
                                    classpathref="maven.plugin.classpath" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>commons-net</groupId>
                        <artifactId>commons-net</artifactId>
                        <version>1.4.1</version>
                    </dependency>
                    <dependency>
                        <groupId>ant</groupId>
                        <artifactId>ant-commons-net</artifactId>
                        <version>1.6.5</version>
                    </dependency>
                    <dependency>
                        <groupId>ant</groupId>
                        <artifactId>ant-jsch</artifactId>
                        <version>1.6.5</version>
                    </dependency>
                    <dependency>
                        <groupId>jsch</groupId>
                        <artifactId>jsch</artifactId>
                        <version>0.1.29</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>download-jsch</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <overWriteSnapshots>true</overWriteSnapshots>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>jsch</groupId>
                                    <artifactId>jsch</artifactId>
                                    <version>0.1.29</version>
                                    <overWrite>true</overWrite>
                                    <outputDirectory>${project.build.directory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
    <properties>
        <javaVersion>1.7</javaVersion>
        <Ip>1.2.3.4</Ip>
        <UserName>root</UserName>
        <Keyfile>${user.home}/.ssh/id_rsa</Keyfile>
    </properties>
    <dependencies>
        <dependency>
            <groupId>jsch</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.29</version>
        </dependency>
    </dependencies>
</project>

फ़ाइल jsch-0.1.29.jar को लक्ष्य डायरेक्ट में बनाया गया था, लेकिन आउटपुट है:

C:\Users\azberger\somePath>mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building name 0.0.0-1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact jsch:jsch:jar:0.1.29 has been relocated to com.jcraft:jsch:jar:0.1.29
[INFO]
[INFO] --- maven-antrun-plugin:1.6:run (echoKuku) @ artifact ---
[INFO] Executing tasks

main:
  [sshexec] Connecting to 1.2.3.4:22
kuku

C:\Users\azberger\somePath>

अपडेट: (16/3/16 8:11 GMT)

scp - ठीक काम करता है
sshexec एक फ़ाइल स्क्रिप्ट के साथ (commandResource = "[file]") - ठीक काम करता है
एक आदेश के साथ sshexec (कमांड = "[कमांड]") - समस्या का कारण बनता है, जैसा ऊपर उल्लेख किया गया है।


Answers

जेएससीएच निर्भरता के नए संस्करणों के साथ कोशिश करें (एंटी जेएससी के लिए 1.8.4 और जेएससी के लिए 0.1.53, प्रत्येक अलग-अलग समूह आईडी के साथ)। यह मेरी तरफ समस्या तय की:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>server-copy</id>
            <goals>
                <goal>run</goal>
            </goals>
            <phase>process-sources</phase>
            <configuration>
                <target>
                    <echo message="Pushing to host..." />
                    <sshexec host="hostname" username="user" trust="true" 
                        password="pass" failonerror="true"  
                        command="mkdir -p /home/user/test/test"/> 
                    <scp trust="yes"
                        file="some-file"
                        todir="user:[email protected]:/path/to/some-file" 
                        />
                </target>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.8.4</version>
        </dependency>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.53</version>
        </dependency>
    </dependencies>
</plugin>

आपका बहुत बहुत धन्यवाद। दो लंबी शाम के बाद मुझे समाधान मिला।

मेरे पास चींटी और न कि org.apache.ant का नवीनतम संस्करण था, जिसे संस्करण 1.6 में बदल दिया गया था। इसलिए नवीनतम संस्करण आज 1.10.1 है और यह बहुत अच्छी तरह से काम करता है।


मेरे पास एक ही समस्या थी और यह डेटाबेस उदाहरण से कनेक्ट करने में असमर्थ होने के कारण हुई थी। उस त्रुटि के ऊपर लॉग में हाइबरनेट त्रुटि HHH000342 की तलाश करें, यह आपको एक विचार दे सकता है कि डीबी कनेक्शन विफल हो रहा है (गलत उपयोगकर्ता नाम / पास, यूआरएल, आदि)





maven ssh ant scp