ProgramingTip

Maven은 SSH를 사용하여 로컬 파일을 원격 서버에 복사합니다.

bestdevel 2020. 12. 30. 23:52
반응형

Maven은 SSH를 사용하여 로컬 파일을 원격 서버에 복사합니다.


Maven은 SSH를 사용하여 원격 서버에 복사 할 수있는 로컬 파일을?

maven 구성 파일의 위치를 ​​지정하고 배포 단계가 실행될 때마다 해당 파일 (또는 파일)을 서버에 복사하고 싶습니다.


maven-deploy-plugin을 사용하면 scp를 사용하여 서버에 배포 할 배포 단계를 구성 할 수 있습니다. 문서 에 수행 방법을 설명하는 페이지 가 있습니다.

나는 추가하는 대신 일반 배포를 믿고 있습니다.

기존 Maven 저장소에 배포하고 파일을 원격 서버에 전달하는 경우 다른 답변에서 제안하는대로 scp 작업을 많이합니다.

에서 이 대답 나는 FTP 작업을 구성하는 방법을 설명한는 SCP의 작업은 키 파일 및 암호 속성 을 추가 (분명히 SCP를 위해 FTP에서 작업 이름을 변경)해야합니다 제외하고 거의 동일하다.


Maven Wagon 제품 보기

간단한 명령 줄로 수동으로 시도 비용 : mvn org.codehaus.mojo:wagon-maven-plugin:1.0:upload -Dwagon.url=scp://username:userpassword@myserver -Dwagon.fromDir=target -Dwagon.includes=*.ear -Dwagon.toDir=/home/elisabetta

두 경우 모두 Wagon 용 SSH 확장을 pom.xml에 추가해야합니다.

<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.8</version>
    </extension>
</extensions>

Maven을 실행할 수에서 있는 개미 SCP 태스크를 사용하지 않는 이유는 무엇 입니까?


Maven은 일반적인 일반적인 도구가 빌드 프로세스를 보완 할 수있는 도구입니다. 역할 antrun 빌드 단계 를 사용하는 것이 좋습니다. 이 단계에서는 build.xml에서 사용하는 일반 ant 구문을 사용하여 모든 작업을 수행 할 수 있습니다.


마차 - SSH 확장자가있는 메이븐 왜건 플러그인사용 하는 PaoloC 와 동일한 아이디어 이지만 POM 파일에서 구성하고 지정된 단계에서 실행 하면이 예제는 SSH를 사용하여 전쟁 파일을 원격 서버에 복사합니다.

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>wagon-maven-plugin</artifactId>
      <version>1.0</version>
      <executions>
        <execution>
          <id>upload-to-myserver</id>
          <phase>deploy</phase>
          <goals>
            <goal>upload-single</goal>
          </goals>
          <configuration>
            <fromFile>${project.build.directory}/${project.build.finalName}.war</fromFile>
            <url>scp://username@myserver/path</url>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <!-- other plugins ... -->
  </plugins>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>2.8</version>
    </extension>
  </extensions>
</build>

<phase>태그는 선택 사항입니다. 다음 명령을 사용하여 업로드 실행 만 가능합니다.

mvn wagon:upload-single@upload-to-myserver

이 질문이 완전히 새로운 것은 오늘도 상황에 처해 있습니다. 내 목표는 다른 서버를 통해 터널링해야하는 원격 서버에서 파일을 업로드하고 명령을 실행하는 것입니다. 나는 가능성이 있다고 만들었습니다. ant(여기에서 언급했듯이 maven에서 다시 트리거 될 수 있음)

Ants sshsession작업은 내부 작업에 사용할 수 있는 터널 만 만듭니다 . 내부 작업은 원격 서버에서 자동으로 실행되지 않지만 터널sshexec 과 함께 작업을 사용하여 수행 할 수 있습니다 . 또한 작업은 이제 터널을 통해 원격 서버로 업로드 할 수 있습니다. 다음은 그 예입니다.scp

<sshsession host="${jumphost}" port="22" username="${user}" password="${password}" trust="true">
    <localtunnel lport="${localTunnelPort}" rhost="${targethost}" rport="22"/>
    <sequential>
        <!-- run a command on the remote server (here mkdir) -->
        <sshexec host="localhost" port="${localTunnelPort}" username="${user.param}" password="${password.param}" command="mkdir ${home}/foobar" trust="true" />
        <!-- upload a file to the remote server -->
        <scp port="${localTunnelPort}" file="test_file.txt" todir="${user.param}:${password.param}@localhost:${home}/foobar/" trust="true" />
    </sequential>
</sshsession>

참조 URL : https://stackoverflow.com/questions/909867/maven-copy-local-file-to-remote-server-using-ssh

반응형